![](/img/trans.png)
[英]Winform: How to display form controls only when all controls have been loaded?
[英]How would I check all the controls on a winform to make sure none of them have been edited before changing what's displayed?
技术:C#、.Net、Winforms
我有一个从数据库中提取数据并填充许多不同控件的主窗体。 标签、文本框、DataRepeaters、DataGridViews 和选项卡也填充了这些类型的控件。
但是,数据也以这样一种方式被提取,即在此表单上有多个“记录”由 BindingNavigator 导航。
由于我的代码结构,我不能轻易地在任何正在验证的控件上调用 DataAdaptor.update() (使用它的关联 DataTable),所以我只使用提交按钮。
我想知道的是“如何检查所有控件以查看它们是否已被编辑?”
我正在使用绑定导航器按钮作为“FindEditedControls()”的触发器
当前解决方案:
DataTable dt = db.GetTable();
dt.RowChanged += new DataRowChangeEventHandler(dtUpdated);
private void dtUpdated(object sender, DataRowChangeEventArgs e)
{
needsCommit = true;
}
按钮只检查 needsCommit boolean 变量。 如果是真的,那么它会要求用户在继续之前提交更改。 如果他们单击“是”,则它将数据提交到数据库。
如果这是你得到的,我要感谢你。 这与 DataGridViews 配合得非常好。 现在使用标准表单控件对其进行测试。
连接到DataTable.RowChanged
事件。 当它触发时,您的一个控件已被编辑。
然后,您可以检查DataRow.RowState
属性以获取要绑定到的行的DataRowState.Modified
值。
从绑定到它的数据中为每个控件分配一个签名,然后使用控件的值检查该签名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.