有没有事件可以依附,以便在数据源应用于其绑定控件时通知我?
还是有另一个事件,在该事件中我可以确保数据源已被应用?
我正在使用WinForms(从WPF转移),并使用带有数据绑定值的标记来确定我正在使用的控件类型。许多控件可能具有相同的标记值,我必须检索具有所需标记的控件以执行业务逻辑。
问题在于我不知道何时执行搜索标记值。 我尝试在调用以下操作后立即搜索标记值:
myBindingSource.DataSource = OutputFunctions.Instance;
//Yes... I'm binding to a singleton with a list of properties.
//Its not the best method, but works.
在我的Form.Load
事件处理程序中,我希望能够设置标签的值。但是,在搜索过程中,我发现标签的值并未设置。如果我刚刚设置了数据源,怎么会这样呢?
从我表单的内部管理代码中可以看出,我已经通过设计窗口的属性正确设置了值:
this.textBoxDTemp.DataBindings.Add(new System.Windows.Forms.Binding(
"Tag",
this.myBindingSource,
"KNOB_DRIVER_TEMP",
true));
我已经查看了
BindingComplete
,它看起来非常有前途,但是在绑定初始化过程中,即使值从数据源传播到目标控件,它也不会触发。
编辑:
按要求,数据源首先在表单的内部代码后台中设置如下:this.myBindingSource.DataSource = typeof(OutputFunctions);
如果有帮助的话,这里是单例模式。
public class OutputFunctions
{
private static OutputFunctions instance;
public static OutputFunctions Instance
{
get
{
if (instance == null)
{
instance = new OutputFunctions();
}
return instance;
}
}
private OutputFunctions() { }
public string KNOB_DRIVER_TEMP { get { return "KNOB_DRIVER_TEMP"; } }
public string KNOB_PASSENGER_TEMP { get { return "KNOB_PASSENGER_TEMP"; } }
public string KNOB_FAN { get { return "KNOB_FAN"; } }
}
myBindingSource.DataSource
属性包含什么内容?我无法复制这种情况。如果我将 DataSource 留空,则会在加载事件之前抛出异常。如果我将其设置为像typeof(MyDataObject)
这样的东西,那么加载事件就会触发,并且在将其设置为实际实例后,标记会立即更新。您确定是在加载事件或构造函数内设置数据源吗? - Ivan Stoevtypeof(OutputFunctions)
,如果我理解正确,这应该初始化一个空的 BindingList。在我设置单例实例之后,我搜索标签但找不到它们。 - Nicholas Miller