我正在使用 .Net Compact Framework 2.0 SP2 和 C# 开发 Windows Mobile 5.0 或更高版本。
我有一个只有自定义控件的 WinForm。我想在表单完成加载并显示控件时调用该自定义控件的方法。
现在我使用激活事件,但是每次关闭消息框时都会引发这些事件。
那一刻抛出了事件吗?
谢谢你。
只需使用 activate 事件,并在表单中设置一个布尔值,当您在自定义控件上调用该方法时,该布尔值设置为 true。当表单的激活事件再次触发时,您只需检查此布尔值即可。
我认为 Compact Framework 中没有 Shown 事件,但您应该能够使用 Load 事件。将表单的 Visible 属性设置为 true,之后您应该能够访问自定义控件。
MyForm_Load(object sender, EventArgs e)
{
' this procedure runs only once, when the form loads
' make the form visible to the user now
this.Visible = true
' the form is now visible
' ... more code
}
这就是我所做的:
1)在表单上创建一个虚拟的空 pictureBox 控件
2)使用布尔变量来告诉在窗体的Load事件之后何时调用pictureBox的Paint事件并调用我自己的OnShow()函数
public partial class MyForm: Form
{
bool form_shown = false;
private void MyForm_Load(object sender, EventArgs e)
{
form_shown = true;
}
private void pictureDummy_Paint(object sender, PaintEventArgs e)
{
if (form_shown)
{
MyOnShow();
form_shown = false;
}
}
}
private void Utility_VisibleChanged(object sender, EventArgs e)
{
if (this.Visible == true) {
//* Form is being showed
}else{
//* Form is being hid
}
}