WOEID CSV, XML, JSON
Category: C# Programming
PERSONLISTVIEWXMLSERIALIZER
PersonListViewXMLSerializer (계층적인 XML 구성예)
XMLELEMENT & XMLATTRIBUTE
XML Element
http://dis.dankook.ac.kr/lectures/hci11/entry/XMLElement
XML Attribute
http://dis.dankook.ac.kr/lectures/hci11/entry/XMLAttribute
XML Element & Attribute
http://dis.dankook.ac.kr/lectures/hci11/entry/XMLElement-Attribute
XML SERIALIZATION TUTORIAL
XML Serialization Tutorial
http://www.diranieh.com/NETSerialization/XMLSerialization.htm
SERIALIZATION
Person Serialization (Using BinaryFormatter or SoapFormatter)
http://dis.dankook.ac.kr/lectures/hci09/entry/Simple-Serialization
Person XML Serialization (Using XML Serializer or Soap XML Serializer)
http://dis.dankook.ac.kr/lectures/hci09/entry/XML-Serialization
Person Using ISerialable Interface
http://dis.dankook.ac.kr/lectures/hci09/entry/ISerialable
PersonList Serialization (Using BinaryFormatter or SoapFormatter)
http://dis.dankook.ac.kr/lectures/hci09/entry/PersonList-Serialization
Custom Control
사용자 정의 컨트롤
-기존 컨트롤을 상속받아 사용자 정의 새로운 컨트롤을 작성
-UserControl을 상속받아 합성 컨트롤을 작성
1. 파일 메뉴->새로 만들기->프로젝트
Visual C# 프로젝트 목록에서 “Windows Forms 컨트롤 라이브러리” 선택하고 이름을 “NumberTextBoxLib”을 입력
2. 솔루션 탐색기에서 UserControl1.cs를 NumberTextBox.cs로 변경
NumberTextBox.cs 코드에서 상속을 UserControl에서 TextBox로 변경
public partial class NumberTextBox: TextBox
NumberTextBox.Designer.cs에 InitializeComponent()에서 AutoScaleMode 속성은 삭제
NumberTextBox.cs 코드에서 OnKeyPress(…) 메소드를 재정의
솔루션을 빌드하면 컨트롤이 완성
완성
———————————————————————————————
사용자 정의 컨트롤 사용
1.솔루션 탐색기의 “참조”에 “NumberTextBoxLib.dll”를 “참조추가”
“도구상자”에서 오른쪽 마우스 “항목선택”을 한 후 “찾아보기” 버튼에서 “NumberTextBoxLib.dll” 다시 로딩한 후, “NumberTextBox” 에 체크가 됬는지 확인
2. 폼에 “NumberTextBox”를 사용하여 디자인하고 솔루션을 빌드하면 컨트롤이 완성
GDI+
GDI+ A Higher Level API
http://www.csharphelp.com/archives3/files/archive593/GDI.pdf
Pen
http://dis.dankook.ac.kr/lectures/hci09/entry/Pen
Brush
http://dis.dankook.ac.kr/lectures/hci09/entry/Brush
Image
http://dis.dankook.ac.kr/lectures/hci09/entry/DrawImage
ImageAttribute
http://dis.dankook.ac.kr/lectures/hci09/entry/ImageAttributes
ImageTransform
http://dis.dankook.ac.kr/lectures/hci09/entry/DrawImageTransform
DoubleBuffering
http://dis.dankook.ac.kr/lectures/hci09/entry/DoubleBuffering
Graphic Path
http://dis.dankook.ac.kr/lectures/hci09/entry/PathScribble
Draw Freedraw line & rubber band line
http://dis.dankook.ac.kr/lectures/hci10/entry/Rubber-band-line-drawing
Draw shapes
http://dis.dankook.ac.kr/lectures/hci10/entry/Draw-Shape
DrawImageObjects
http://dis.dankook.ac.kr/lectures/hci10/entry/DrawImageObjects
Valid double number in C#
텍스트 박스에 “12.5”, “.3”, “-12” 등과 같은 양수/음수의 double 숫자만 입력받을 수 있도록 하려면
(그외에 “abcd”같은 문자나 “12.3.4” 같은 이상한 숫자는 입력받을 수 없도록하기위해)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// accept only digit(0-9) with ‘.’ (dot) and ‘-‘ (minus)
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ‘.’ && e.KeyChar != ‘-‘)
e.Handled = true;
// accept only one decimal point (.32)
if (e.KeyChar == ‘.’ && (sender as TextBox).Text.IndexOf(‘.’) > -1)
e.Handled = true;
// accept only minus sign at the beginning
if (e.KeyChar == ‘-‘ && (sender as TextBox).Text.Length > 0)
e.Handled = true;
}
How to: Sort ListView Items
How to: Sort ListView Items
http://msdn.microsoft.com/en-us/library/ms229643(VS.80).aspx
class ListViewItemComparer : IComparer
{
private int column;
public ListViewItemComparer() : this(0) {}
public ListViewItemComparer(int column)
{
this.column = column;
}
public int Compare(object x, object y) // string compare
{
return String.Compare(((ListViewItem)x).SubItems[column].Text,
((ListViewItem)y).SubItems[column].Text);
}
}
/////
public partial class Form1 : Form
{
[…]
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
// Set the column number that is to be sorted; default to ascending.
this.listView1.ListViewItemSorter = new ListViewItemComparer(e.Column);
// Perform the sort with these new sort options.
this.listView1.Sort();
}
}
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);
};
[…]
}
pList.Sort(ComparePersonByID); // pList를 ID로 정렬하기 (Comparison delegate)
public class Person : IComparable<Person>
{
public static Comparison<Person> ComparePersonByID =
delegate(Person p1, Person p2)
{
return p1.ID.CompareTo(p2.ID);
};
[…]
}
pList.Sort(new PersonIDComparer()); // pList를 ID로 정렬하기 (IComparer)
public class PersonIDComparer : IComparer<Person>
{
public int Compare(Person p1, Person p2)
{
return p1.ID.CompareTo(p2.ID);
}
}
pList.Sort((p, q) => p.ID.CompareTo(q.ID)); // pList를 ID로 정렬하기 (lambda)