C# 用于更改Winform中其他字段的C事件

C# 用于更改Winform中其他字段的C事件,c#,winforms,events,C#,Winforms,Events,我正在应用程序中创建动态表单。 Im使用DevXPress控件,如: NumericUpDown controlNumUpDown = null; DateEdit controlDateEdit = null; TextEdit controlTextEdit = null; LookUpEdit controlComboBox = null; SimpleButton co

我正在应用程序中创建动态表单。 Im使用DevXPress控件,如:

            NumericUpDown controlNumUpDown = null;
            DateEdit controlDateEdit = null;
            TextEdit controlTextEdit = null;
            LookUpEdit controlComboBox = null;
            SimpleButton controlButton = null;
            MemoEdit controlMemo = null;
            GridControl controlGrid = null;
            CheckBox controlCheckBox = null;
            CheckedListBoxControl controlCheckedListBoxControl = null;
            RadioGroup controlRadioGroup = null;
            LabelControl controlStaticText = null;
现在,每个控件值都可以依赖于另一个控件值—无论字段是否可见,是否启用

假设我们有date edit fieldId=48和LookUpEdit组合框

现在,Combobox已将动态列表定义为SQL查询,如下所示:

从插入日期=Field.48的索引中选择*

当另一个控件中的日期更改时,组合框中的项目列表应更新。同样适用于文本编辑器,如果Field.48是TextEdit,那么它应该以相同的方式工作,代码中给出的其他类型的字段也是如此

注意——这只是一个例子,正如我提到的,每个控件都可以依赖另一个控件,如果用户定义得不好,它们甚至可以进入无限循环。我不在乎这个,就像一个字段可以依赖100个其他字段一样

所以问题是,什么样的活动最适合这样做? 到目前为止,我已经使用了每个控件的Leave事件,但如果控件未启用或不可见,它将不起作用

有时需要隐藏某些字段,如AMONTOFDOLLARS NumericEdit,但还有其他字段,如Checkbox。如果选中“文档很重要”,则可能依赖于隐藏字段:AMONTOFDOLLARS


有什么建议吗?欢迎所有答案,它可能无法通过事件解决…

您试图做的并不是一个新概念。您正在尝试创建一个可观察属性系统,这是适合您需求的正确方法和设计模式

在谷歌上搜索,也可以在这里查看:

其基本思想不是对事件本身作出反应,而是对特定控件的属性设置器更改作出反应。许多第三方组件公开OnChange类型事件,以便您拦截特定的属性更改。其他组件允许您重写属性设置器行为。有时,您需要对第三方控件进行子类化,并连接您自己的处理程序


您的问题非常广泛,但即使引用的链接不能完全满足您的需要,上述内容也应该有助于引导您朝着正确的方向前进。

我个人不认为任何一种类型的事件都能做到这一点,因为它们会随控件类型的不同而变化,例如,选择的组合框DexChanged应该可以工作,但是它在其他控件上不可用,除非我答错了问题,您想更新其他控件或在控件的某些属性更改时进行查询您答对了问题,对于除comboBox之外的其他控件,GridView我想更改值,对于comboBox和GridView我想更改查询。是的,你是对的,其他控件有一些特定的事件,这就是为什么我第一次想到使用通用事件,比如“离开”,也许你有一些其他的想法,比如一些模式?我不明白的是,如何编辑一个禁用/不可见的控件,如果它的值通过代码更新,那么只会调用大多数与ui相关的事件,无论如何,我认为您应该尝试将自定义事件添加到您的所有控件中,该控件将根据您想要的条件进行调用,例如,或者您可以覆盖Onpaint,因为它将在每次控件上发生任何更改时被调用control@Anil正如您所说,onPaint会终止应用程序,它随时都会被调用。我只想在EditValueChanged或TextChanged上调用它,但问题是-当用户在活动控件中首次登录时,事件被触发。或者你可以在每个控件上使用不同的事件,但在处理程序中分配相同的functionHANDLER和put开关大小写,以决定发送方控件的类型。例如,如果是复选框或组合框,则相应地调整你要在其他控件上更改的任何属性。你的帖子将我移至方向正确。我认为visitor a.k.a.observer模式将满足我的需要。我根本不应该关注控件及其事件,而应该将对象绑定到控件,并使用模式实现它们。我对控件的了解太多了,它们只会改变我的对象的值,无论何时,我都不应该专注于此。谢谢。