팡이네

ComboBox SelectedItem

C#2011. 10. 27. 11:08
DataTable로 바인딩 하여 콤보박스를 표시했을 경우
선택한 Row 전체를 가져오고자 할 때
1
2
3
4
    var columnValue = ComboBox.SelectedRow["ColumnName"].ToString();
또는
    var selectedRow = ComboBox.SelectedItem as DataRowView;
    var columnValue = selectedRow["ColumnName"].ToString();

ValueMember나 DisplayMember로 지정하지 않은 컬럼의 값으로
콤보박스를 선택하고자 할 때
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static DataRowView GetComboSelectedItem(ComboBox cbo
    , string columnName, string valueForSelect)
{
    foreach (DataRowView row in cbo.Items)
    {
        if (row[columnName].ToString() == valueForSelect)
        {
            return row;
        }
    }
 
    return null;
}
 
DataTable dt = ...;
 
cboCombo.DisplayMember = "Text";
cboCombo.ValueMember = "Code";
cboCombo.DataSource = dt;
 
cboCombo.SelectedItem
    = GetComboSelectedItem(cboCombo, "OtherColumnName", "04");

콤보박스 Dictionary 로 바인딩
1
2
3
4
5
6
7
8
var list = new Dictionary<string, int>();
list.Add("1", 100);
list.Add("2", 200)
list.Add("3", 300);
 
combobox.DisplayMember="Key";
combobox.ValueMember="Value";
combobox.DataSource = new BindingSource(list, null);

오픈 소스인 zxing(Zebra Crossing) 1.7을 이용한다.
(

http://code.google.com/p/zxing/

)

//인코딩 설정
//zxing의 인코딩 기본값이 ISO-8859-1이므로
//한글처리를 위해 인코딩 힌트를 UTF-8로 설정한다.
Hashtable htHint = new Hashtable();
if (cbUTF8.Checked)
{
	htHint.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); //zxing 기본값:ISO-8859-1
}

//오류복원레벨 설정
//따로 지정하지 않으면 기본값으로 L이 설정된다.
ErrorCorrectionLevel ecLevel = ErrorCorrectionLevel.L;
switch (cboEcLevel.SelectedIndex)
{
	case 1: ecLevel = ErrorCorrectionLevel.M; break;
	case 2: ecLevel = ErrorCorrectionLevel.Q; break;
	case 3: ecLevel = ErrorCorrectionLevel.H; break;
}
htHint.Add(EncodeHintType.ERROR_CORRECTION, ecLevel); //기본값:L

try
{
	//QRCode 이미지를 만든다.
	QRCodeWriter writer = new QRCodeWriter();
	ByteMatrix bm = writer.encode(txtData.Text, BarcodeFormat.QR_CODE
					, tbSize.Value, tbSize.Value, htHint);

	pbQRCode.Image = bm.ToBitmap();	//pictureBox 컨트롤에 표시
}
catch (Exception ex)
{
	MessageBox.Show(ex.ToString());
}