ComboBox Item Binding
훈스 C# 게시판에 올라온 질문에 대한 답글로 잠깐 만들어서 답글을 했던 내용임.
ComboBox에 바인딩하고 이값에 대한 값을 처리할때 단위데이타를 만들고 이에 대한 집합을 만들어
콤보 박스에 바인딩해주면 나중에 단위데이타가 여럿 일 경우 해당 단위데이타 상태까지도 컨트롤 가능해짐 .
예제에는 ComboBox 1개, TextBox 1개
ComboBox.SelectedIndexChanged 이벤트
소스 ~~~
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ComboList clist = new ComboList();
clist.Add("A", "1");
clist.Add("B", "2");
clist.Add("C", "3");
clist.Add("D", "4");
comboBox1.DataSource = clist; // IListSource를 요구함.
comboBox1.DisplayMember = "Name";
comboBox1.ValueMember = "Value";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.textBox1.Text = ((_ComboItem)comboBox1.SelectedItem).Value;
// 바인딩 된 Item을 가지고 처리 하므로 단위 아이템의 프로퍼티 갯수는 증감할 수 있음.
}
}
public class _ComboItem // 단위 아이템
{
public string Name { get; set; }
public string Value { get; set; }
public override string ToString()
{
return Name; // combobox에 디스플레이 됨.
}
}
public class ComboList : IListSource // 집합아이템
{
List<_ComboItem> items = new List<_ComboItem>();
public void Add(string _Name, string _Value)
{
items.Add(new _ComboItem() { Name = _Name, Value = _Value });
// 2005에서는 _ComboItem에 생성자로 파라미터를 받으면 됨.
}
public string this[string Name]
// 인덱서를 이용하여 단위데이타에 대한 추적이 객체명[ 단위데이타이름 ]으로 가능.
{
get {
string returnValue = string.Empty;
foreach (_ComboItem item in items)
{
if (item.Name == Name)
{
returnValue = item.Value;
break;
}
}
return returnValue;
}
}
#region IListSource 멤버
public bool ContainsListCollection
{
get { return true; }
}
public System.Collections.IList GetList()
{
return items;
}
#endregion
}
}
// 여기서 빠진거라면 단위데이타를 제거하는 Dispose와 Clear 기능임. 빠진다고 해서 그닥.. 큰 영향은 없는듯도 하고..
// 많아 진다면... 구현해주는게 좀더 나을것 같다.
'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글
암묵적인 형변환? 코드...? (0) | 2010.05.18 |
---|---|
IPC .Net ( 프로세스간 통신 ) (1) | 2010.05.12 |
VB의 Left구현하기... 확장메서드를 이용함... (0) | 2010.02.22 |
기간 출력하고자 할때... (0) | 2010.02.18 |
NotifyIcon에 ContextMenuStrip 2개 동적으로 바꾸기... (0) | 2010.02.12 |