这适用于Windows Form
。
我们有DataTable
,如下所示:
EmplId
A101
A102
A103
A104
A105
B101
B102
B103
B104
是否可以将一组组合框绑定到此DataTable,使其看起来像这样?
如果那是不可能的,那么我还有哪些建议可以将DataTable
显示在一组我可以选择的控件中?
我知道我可以使用CheckedListBox
,但我希望重复方向是水平的。似乎CheckedListBox
没有RepeatDirection
属性。
感谢。
答案 0 :(得分:1)
试试这个你可以随意改进它:
int x = 4;
int y = 4;
foreach (DataRow dt in YourDataTable.Rows)
{
x = 4;
y = panel1 .Controls.Count * 20;
CheckBox ck=new CheckBox() ;
ck.Text =dt[2].ToString ();
ck.Width = 450; // determine the width to fit 3 columns
ck.Location = new Point(x, y);
ck.CheckedChanged += new System.EventHandler(MyEven);
Form1.Controls .Add (ck);
}
为汉德尔CheckedChanged添加此方法:
public void MyEven(object sender, EventArgs e)
{
CheckBox chek = (CheckBox)sender;
MessageBox.Show("Check is pressed " + chek.Text);
}
//阅读所有选中的复选框
foreach (Control c in flowLayoutPanel1.Controls)
{
if (c is CheckBox)
{
CheckBox ck = (c as CheckBox);
if (ck.Checked)
{
MessageBox.Show("Check " + ck.Text + " is chcked");
}
}
}
答案 1 :(得分:0)
将TableLayoutPanel
放在表单上。将ColumnCount
属性设置为3。
foreach (DataRow row in dataTable.Rows)
{
var checkBox = new CheckBox();
checkBox.Text = row["EmpId"].ToString();
tableLayoutPanel.Controls.Add(checkBox);
}