我需要根据我的字段中的数据实时启用/禁用我的SAVE按钮。Silverlight(如)在Windows窗体应用程序验证
以下是完成此操作的可接受方法吗?感觉不对,但我不知道我能做到这一点。
每个用户控件(CRUD表格)具有BackgroundWorker
及以下相关方法;
StartBGWorker()
StopBGWorker()
RequiredFieldsValid()
有目的不言自明,我希望。该过程如此进行,以至于当用户点击NEW或EDIT时,它将拨打StartBGWorker()
,这将创建一个新的BackgroundWorker
,并为其拨打RunDataASync()
。该BGWorker的DoWork()
方法是这样的:
void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
ucNavDiagnosis.btnSave.Enabled = Convert.ToBoolean(e.UserState);
}
void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
bgWorker.ReportProgress(0, RequiredFieldsValid());
System.Threading.Thread.Sleep(500);
}
}
private bool RequiredFieldsValid()
{
// TODO: Add other required fields
return (!memAllergies.Text.Equals(string.Empty));
}
这工作,但感觉“布什联赛。”无论如何,当用户点击SAVE或CANCEL时,电话StopBGWorker()
被放置在工作人员Disposes
。
作为进一步免责声明,此应用程序目前不使用绑定。这是一个长时间的解释,但正如他们所说的那样。
如果你澄清你的问题,这可能会有所帮助。 – 2010-09-23 15:00:02
@Lucas B:我的道歉,我认为很明显,但我现在看到它不可能。那个更好吗?感谢您的发言! – 2010-09-23 15:06:59
确实有一个原因:为什么不检查RequiredFieldsValid(),只要其中一个控件的输入变为有效? – 2010-09-23 15:20:52