如何检查控件是否已加载?

时间:2013-05-22 06:17:57

标签: .net winforms user-controls

我正在创建一个UserControl,它有一个SetCameraCount方法,可以在实际显示控件之前和/或之后使用。

如果在显示控件之前使用 之前 ,则除了设置SetCameraCount以便控件在第一次加载时使用它时,不应该执行任何操作。< / p>

如果使用cameraCount设置 后加载控件,则控件的更新方式应与第一次使用新SetCameraCount时加载的方式相同值。

为实现这一目标,我使用cameraCount作为bool来检查UserControl是否已加载。

_IsLoaded

我经常使用这种模式。

虽然它运行正常但我想知道我是否可以用Windows Forms中已实现的某些属性替换bool _IsLoaded; int cameraCount; public void SetCameraCount(int cameraCount) { if (this.cameraCount != cameraCount) { this.cameraCount = cameraCount; if (_IsLoaded) buildMenu(); } } void CamMultiple_Load(object sender, EventArgs e) { buildMenu(); _IsLoaded = true; } void buildMenu() { // this method will absolutely fail if the control is not loaded // ... } bool。现在我没找到任何东西。你知道这样的房产吗?

1 个答案:

答案 0 :(得分:0)

影响其他可视元素的UserControl属性值更改需要处理两种情况:

    控件可见之前
  • :控件已构造,但尚未添加到控件集合中。 Load事件尚未触发,控件包含的一些可视元素尚未准备好。这就是为什么属性值必须存储在某处并用作控件Load事件被触发的原因。

  • 加载控件后
  • :控件使用的可视元素已准备就绪。可以正确应用属性值更改。

这就是我使用问题中描述的模式的原因。

正如Hans Passant评论的那样,当加载控件时,属性IsHandleCreated成立。 Created属性似乎也有效,但我需要进一步测试它。