Category Archives: C# Programming

To Prevent Multiple Show of the same Modeless Form

private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
   // 현재 열려있는 비모달형 폼 중복생성 방지
   bool formExist = false;

   foreach (Form f in Application.OpenForms)
   {
     if (f.GetType() == typeof(
FindPersonForm))
     {
       f.Activate();
       formExist = true;
     }
  }
 
  if (!formExist)
 
{
     FindPersonForm f = new FindPersonForm();
     f.Owner = this;
     f.Show();
     f.Activate();
   }
}

PersonListViewDialog

PersonListViewDialog
public List<Person> pList = new List<Person>();

-FileIO
       private void LoadFile(string path)
        {
            if (File.Exists(path))
            {
                System.Diagnostics.Trace.WriteLine(path);

                // 한글처리시 필요함
                using (StreamReader sr = new StreamReader(path, System.Text.Encoding.Default))
                {
                    string line = “”;
                    char[] delimiter = { ‘,’ };
                    while ((line = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(line);
                        // cvs file format parse
                        string[] items = line.Split(delimiter);
                        foreach (string s in items)
                        {
                            Console.WriteLine(s);
                        }
                        // add Person into the List
                        Person p = new Person();
                        p.Name = items[0];
                        p.ID = int.Parse(items[1]);
                        p.Phone = items[2];
                        p.Address = items[3];
                        pList.Add(p);
                        // add Person into ListView Control
                        listView1.Items.Add(p.ToListViewItem());
                    }
                    sr.Close();
                }
            }
        }

        private void WriteFile(string path)
        {
            // 한글처리시 필요함
            using (StreamWriter sw = new StreamWriter(path, false, System.Text.Encoding.Default))
            {
                foreach (Person p in pList)
                    sw.WriteLine(p);                // Person에 ToString() 사용
                sw.Close();
            }
        }

-Modal형 AddDialog
-Modeless형 FindDialog

PersonListView

PersonListView
-Person 정보 FileIO (csv format) 파일 읽기, 저장하기
-리스트뷰에 파일읽어서 열기 및 저장하기
-여기에 리스트뷰의 칼럼을 클릭하면 그 순서대로 전체 항목을 정렬하기 추가해보기
-여기에 사람정보 (이름, ID, 전화번호, 주소) 입력을 위한 TextBox. 그리고 ID는 숫자만 입력가능한 모달형 대화상자 추가해보기
-여기에 사람을 찾는 모달리스형 대화상자 추가해보기

C# Windows Forms Controls

Label, Button 사용예
http://dis.dankook.ac.kr/lectures/hci09/entry/Controls
 
Buttons
http://dis.dankook.ac.kr/lectures/hci09/entry/Buttons

GroupBox
http://dis.dankook.ac.kr/lectures/hci09/entry/GroupBox

TextBox
http://dis.dankook.ac.kr/lectures/hci09/entry/TextBox

LinkedLabel
http://dis.dankook.ac.kr/lectures/hci09/entry/Linked-Label

ListBox
http://dis.dankook.ac.kr/lectures/hci09/entry/ListBox

Poll
http://dis.dankook.ac.kr/lectures/hci09/entry/Poll

PictureBox
http://dis.dankook.ac.kr/lectures/hci09/entry/Picture-Timer

TabControl
http://dis.dankook.ac.kr/lectures/hci09/entry/Tab-Control

TreeControl
http://dis.dankook.ac.kr/lectures/hci09/entry/Tree-Control

ListView
http://dis.dankook.ac.kr/lectures/hci09/entry/ListView

Textbox (Number Only)
http://dis.dankook.ac.kr/lectures/hci09/entry/Number-Only-Textbox

TRACE macro

TRACE macro
-윈도우 응용프로그램 개발시 Visual Studio IDE의 Output Window (출력창)에 Debug하는 내용을 출력하고자 할 때 System.Diagnostics.Trace.WriteLine(…..)을 사용
-기존의 C# Console 응용프로그램에서 System.Console.WriteLine(….)와 동일
-기존의 MFC 윈도우 프로그래밍에서 TRACE 매크로와 비슷 (C의 printf와 동일한 형식 지원)
-기존의 WIN32 윈도우 프로그래밍에서 OutputDebugString 함수와 같은 기능 (C의 printf와 동일한 형식 지원)

Getting Started with Windows Forms

http://msdn.microsoft.com/en-us/library/ms229601(VS.80).aspx


VC# Windows Forms Application




  • 메뉴에서 File->New->Project->Visual C# 템플릿->Windows Forms Application를 선택한 후 “프로젝트 이름(예를 들어, WindowFormHelloWorldApplication)”을 적고 확인버튼을 누르면 빈폼 프로젝트가 생성된다.


사용자 삽입 이미지


사용자 삽입 이미지

사용자 삽입 이미지

코드 추가

  • Toolbox(도구상자) 에서 컨트롤을 선택(예를 들어, Label 또는 Button)하여 Dialog기반의 Form 안에 추가하여 편집한다.


사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

컨트롤에 이벤트 추가하기
-컨트롤 (예를들어, 버튼을 더블클릭하면 또는 이벤트목록중 Click이벤트에 더블클릭하면)에 클릭 이벤트에 대한 이벤트핸들러에 내용(예를 들어, 레이블의 Text를 “Button Clicked”)을 작성한다.

        private void button1_Click(object sender, EventArgs e)
        {
            // button1을 클릭하면 label1에 “Button Clicked”출력
            label1.Text = “Hello World!”;
        }


빌드(F7) 후 실행(F5)하기

사용자 삽입 이미지