我有一个带有tabControl的c#winform(它有5个Tabs),文本框,datetimepicker和复选框,通过Entity Framework连接到一个表。 我的所有复选框的属性已检查设置为错误,检查状态设置为未选中和三州 strong>设置为 False 。
当我添加新记录时,我的复选框会遇到一种非常奇怪的行为。在添加新记录时,我的程序调用一个名为 EmptyCheckBoxes 的子程序,以确保它们都被设置为false并且它们的文本被设置为" Ne"。到目前为止一切顺利 - >它们被设置为false并且文本是正确的(参见图1)。
以下是我遇到问题的两种情况:
1 我单击一个复选框以使其选中(设置为true并将其文本设置为" Da" - >查看image2上的Ponedeljek)。到此为止,一切都按计划进行。
但是,如果我使用鼠标并尝试点击其他复选框(请查看图像3上的Torek),此复选框仍未选中,我的表单上的所有其他复选框都变为灰色并已检查!
2 添加新记录时,复选框设置为false,文本正确(参见图1)。但是,这次我不打算触摸我的复选框,我只需点击我的datetimepicker,然后点击其他文本框。巴姆! 我表单上的所有复选框都变灰并检查!
如果他们的ThreeState属性设置为False,怎么可能呢? 这真的很烦人,我完全迷失了,在哪里找到这个问题的原因。因为,如果我保存这个新记录,所有复选框都会丢失其灰色并继续检查文本" Ne" (值true保存在表格中!)。
所有复选框都有此代码(来自其中一个代码):
private void checkBox49_Click(object sender, EventArgs e)
{
if (checkBox49.Checked == true)
{
checkBox49.Text = "Da";
}
else
{
checkBox49.Text = "Ne";
}
}
private void checkBox49_CheckedChanged(object sender, EventArgs e)
{
if (checkBox49.Checked == true)
{
checkBox49.Text = "Da";
}
else
{
checkBox49.Text = "Ne";
}
}
这是一个代码,用于将复选框设置为false,将文本设置为" Ne":
private void EmptyCheckBoxes()
{
TabPage tabPage1 = tabControl1.TabPages[0];
TabPage tabPage2 = tabControl1.TabPages[1];
TabPage tabPage3 = tabControl1.TabPages[2];
TabPage tabPage4 = tabControl1.TabPages[3];
TabPage tabPage5 = tabControl1.TabPages[4];
tabControl1.SelectedTab = tabPage1;
UncheckCheckBoxes(tabPage1);
tabControl1.SelectedTab = tabPage2;
UncheckCheckBoxes(tabPage2);
tabControl1.SelectedTab = tabPage3;
UncheckCheckBoxes(tabPage3);
tabControl1.SelectedTab = tabPage4;
UncheckCheckBoxes(tabPage4);
tabControl1.SelectedTab = tabPage5;
UncheckCheckBoxes(tabPage5);
}
private void UncheckCheckBoxes(Control ctrl)
{
CheckBox chkBox = ctrl as CheckBox;
if (chkBox == null)
{
foreach (Control child in ctrl.Controls)
{
UncheckCheckBoxes(child);
}
}
else
{
chkBox.Checked = false;
chkBox.Text = "Ne";
}
}
感谢您对此问题的任何暗示,线索或解决方案。
弗拉基米尔
答案 0 :(得分:1)
Fabio,你对_Click eventhandler是对的。但它没有解决我的问题。 我的问题是在我的winform上造成了groupboxes。为什么,我不知道。 这是我的 CheckStateChanged 事件的解决方法,其工作方式类似于魅力:
i