我的 Windows 表单项目中的某个表单存在问题。只有一种形式有问题;还有其他几个使用相同类型的引用没有这个问题。
问题是通过后面的代码修改控件实际上并没有在表单上更新它们。从添加从数据库中提取的值到组合框的 Items 集合(通过.Items.Add()
方法),设置文本框或复选框是否启用,设置文本框的文本或复选框的选中状态的任何操作...没有任何作用。我已经尝试注释掉所有方法中的所有代码,除了为某些控件实际设置启用状态的代码,以确保在我不知道的情况下没有其他任何东西在运行,但问题仍然存在。
正如调试器所示,更改启用状态的代码肯定会被命中,并且启用状态设置正确,取决于条件是真还是假。应该禁用的控件仍然是可编辑的,并且看起来仍然是可编辑的。代码最初是使用智能感知自动填写控件名称编写的,因此从后面的代码链接到表单上的正确控件应该没有任何问题。我还尝试将表单放大并放入空白面板,上面有一个新的文本框和复选框,并通过相同的方法将面板设置为启用或禁用,当它运行时,控件也没有被后面的代码改变了。
关于我可能遗漏的任何建议?这是 Windows 表单的基本功能,我不知道可能是什么问题,而且通过谷歌搜索或搜索此站点也找不到任何类似的问题。
谢谢!
编辑:这是一个应该工作的代码示例,但事实并非如此。类似的代码在其他一些表单上使用没有问题。
当检查一个名为Chkdisable的复选框时,此事件将运行:
private void chkDisable_CheckedChanged(object sender, EventArgs e)
{
SetControlsEnabledStatus(!((CheckBox)sender).Checked);
}
private void SetControlsEnabledStatus(bool enabledStatus)
{
textBox1.Enabled = enabledStatus;
textBox2.Enabled = enabledStatus;
}
我 100% 确定此事件连接正确,触发正确,并且文本框的启用状态设置正确。没有其他方法具有可以覆盖它的未注释代码。但是,只要单击复选框后再次加载表单,文本框就会始终处于启用状态。
EDIT2:如果有人因为自己的问题遇到这个问题,这就是导致我的问题的原因:
我不得不从头开始创建一个新表格,才能最终找到它。事实证明,在构造函数和 FormLoad 事件中都调用了 InitializeComponent()。基本上,我创建了一个带有相同控件的新表单,只运行了禁用事件,当我复制加载代码时,禁用停止工作。