我正在创建一个UserControl,它有一个SetCameraCount
方法,可以在实际显示控件之前和/或之后使用。
如果在显示控件之前使用 之前 ,则除了设置 如果使用 为实现这一目标,我使用 我经常使用这种模式。 虽然它运行正常但我想知道我是否可以用Windows Forms中已实现的某些属性替换SetCameraCount
以便控件在第一次加载时使用它时,不应该执行任何操作。< / p>
cameraCount
设置 后加载控件,则控件的更新方式应与第一次使用新SetCameraCount
时加载的方式相同值。cameraCount
作为bool来检查UserControl是否已加载。_IsLoaded
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。现在我没找到任何东西。你知道这样的房产吗?
答案 0 :(得分:0)
影响其他可视元素的UserControl属性值更改需要处理两种情况:
:控件已构造,但尚未添加到控件集合中。 Load事件尚未触发,控件包含的一些可视元素尚未准备好。这就是为什么属性值必须存储在某处并用作控件Load事件被触发的原因。
:控件使用的可视元素已准备就绪。可以正确应用属性值更改。
这就是我使用问题中描述的模式的原因。
正如Hans Passant评论的那样,当加载控件时,属性IsHandleCreated
成立。 Created属性似乎也有效,但我需要进一步测试它。