ScribbleMenu
-Menu, ContextMenu, Toolbar, StatusBar1087487756.zip
Scribble
lecture10
ListView
Generic List Class Sort Method
public void Sort(Comparison<T> comparison)
http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
List<Person> pList = new List<Person>();
pList.Sort(ComparePersonByID); // pList를 ID로 정렬하기
[…]
public class Person : IComparable<Person>
{
public static Comparison<Person> ComparePersonByID =
delegate(Person p1, Person p2)
{
return p1.ID.CompareTo(p2.ID);
};
[…]
}
How to: Sort ListView Items
How to: Sort ListView Items
http://msdn.microsoft.com/en-us/library/ms229643(VS.80).aspx
class ListViewItemComparer : IComparer
{
[…]
public int Column;
public int Compare(object x, object y)
{
return String.Compare(((ListViewItem)x).SubItems[Column].Text,
((ListViewItem)y).SubItems[Column].Text);
}
}
Number Only Textbox
// number only textbox using TryParse
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
int value = 0;
e.Handled = !int.TryParse(e.KeyChar.ToString(), out value);
}
// number only textbox using Regex.IsMatch
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), “\\d+”))
e.Handled = true;
}
Assignment5
연습문제 Ex5 (Due by 11/26 목 24시까지)
-cyber 강의실 (cyber.dku.edu)로 source code, executable file, solution/project VC# file, 보고서를 학번_이름_Ex5.zip으로 묶어서 낼 것. 보고서 (30%)1113718331.hwp
[연습문제]
1. PersonRecord라는 Window Form 응용프로그램 프로젝트를 생성한다.
2. 생성된 폼 Form1.cs [Design]에서 Toolbox(도구상자)에서 Controls (컨트롤)을 가져와 출력화면을 위한 폼을 디자인한다. (10%)
-리스트 출력을 위한 ListView는 속성 (Property) 창에서 View를 Details로 바꾼다.
-편집 컨트롤 그룹을 위한 Group Box
-사람정보 (이름, ID, 전화번호, 주소) 입력을 위한 TextBox. 그리고 ID는 숫자만 입력할 수 있도록 한다.
-등록, 수정, 삭제, 모두 삭제를 위한 Button
-파일 열기, 파일 저장, 응용프로그램 끝내기 ToolStrip (또는 Button 사용)
-OpenFileDialog와 SaveFileDialog 공용컨트롤 등등
3. Person.cs 클래스는 다음 메소드를 가진다. (10%)
– public override string ToString() // “이름,ID,전화번호,주소”로 출력 (CSV 파일 출력에 필요)
– public int CompareTo(Person other) // Person의 이름 순서대로 비교 (Sort에 필요)
– public bool Equals(Person other) // 이름과 같은지 비교 (Find에 필요)
– public ListViewItem ToListViewItem() // 리스트뷰 항목을 생성 (ListView 컨트롤에 필요) 메소드를 추가한다.
4. Form1.cs 클래스에 List<Person>을 데이터 멤버로 포함시키고, 파일열기, 파일저장, 추가, 수정, 삭제, 모두 삭제 버튼을 이용하여 사람 정보를 ListView에 새로운 항목으로 추가하거나, 선택된 항목의 수정 및 삭제 등이 가능하도록 이벤트 핸들러를 작성한다. (30%)
멤버 필드:
-private List<Person> pList;
-public Form1()
{
InitializeComponent();
pList = new List<Person>();
}
툴바 이벤트 핸들러:
// 파일을 읽어 리스트와 리스트뷰에 Person 추가
-private void loadFileButton_Click(object sender, EventArgs e)
// 리스트에 있는 모든 Person을 파일로 저장
-private void saveFileButton_Click(object sender, EventArgs e)
// 응용프로그램 종료
-private void closeButton_Click(object sender, EventArgs e)
– 텍스트파일은 CSV 포맷 (예: Test.csv를 사용하여 테스트해 볼 것)
김승훈, 1202, 041-550-3481, 3과420
박태근, 1204, 041-550-3486, 3과419
김대원, 1204, 041-550-3487, 3과418
박경신, 1207, 041-550-3469, 3과417
서병문, 1207, 041-550-3471, 3과407
정재진, 1209, 041-550-3482, 3과409
김태완, 1207, 041-550-3512, 학생회관
김명숙, 1207, 041-550-3511, 3과511
버튼 이벤트 핸들러:
// pList와 ListView1에 Person 항목 추가 (Person의 ToListViewItem() 사용할 것)
-private void addButton_Click(object sender, EventArgs e)
// pList와 ListView1에서 현재 선택된 Person 정보 수정
-private void editFileButton_Click(object sender, EventArgs e)
// pList와 ListView1에서 현재 선택된 Person 항목 삭제
-private void deleteButton_Click(object sender, EventArgs e)
// pList와 ListView1에서 모든 Person 항목 삭제
-private void deleteallButton_Click(object sender, EventArgs e)
리스트뷰 이벤트 핸들러:
// 리스트뷰에서 현재 선택된 항목을 사람 정보(이름/ID/전화번호/주소) TextBox에 출력
-private void listView1_ItemSelectionChanged(object sender,
ListViewItemSelectionChangedEventArgs e)
// 리스트뷰에서 현재 선택된 항목에 Person을 삭제
-private void listView1_DoubleClick(object sender, EventArgs e)
4. 생성한 폼을 이용하여 구현한 모든 메소드를 테스트한 결과를 스냅샷으로 찍어서 보고서에 제출한다. (10%)
– 파일 열기로 데이터를 읽어들여 리스트에 로딩
– 추가, 수정, 삭제, 모두삭제를 사용하여 5명 이상 Person 추가 또는 제거
– 리스트뷰의 항목을 선택(ItemSelectionChanged), 항목을 더블클릭(DoubleClick), 헤더의 칼럼을 클릭(ColumnClick)하는 기능 테스트
– 파일 저장을 사용하여 리스트에 있는 모든 데이터를 저장 (리스트뷰에 있는 정보와 저장한 파일의 정보가 동일한지 스냅샷으로 찍어서 비교해줄 것)
– 응용프로그램 종료
5. Person 또는 Form1에서 본인이 더 테스트해보고 싶은 Method를 추가하라. 예를 들어 리스트뷰의 칼럼을 클릭하면 그 순서대로 전체 항목을 정렬하는 것 등등. (10%)
http://msdn.microsoft.com/ko-kr/library/ms229643(VS.80).aspx
// 리스트뷰의 헤더(이름/ID 칼럼)을 클릭하면 그 순서대로 전체 항목 Sort (정렬)
-private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)