我如何知道表单何时显示?

问题描述 投票:0回答:4

我正在使用 .Net Compact Framework 2.0 SP2C# 开发 Windows Mobile 5.0 或更高版本

我有一个只有自定义控件的 WinForm。我想在表单完成加载并显示控件时调用该自定义控件的方法。

现在我使用激活事件,但是每次关闭消息框时都会引发这些事件。

那一刻抛出了事件吗?

谢谢你。

c# winforms events compact-framework
4个回答
6
投票

只需使用 activate 事件,并在表单中设置一个布尔值,当您在自定义控件上调用该方法时,该布尔值设置为 true。当表单的激活事件再次触发时,您只需检查此布尔值即可。


2
投票

我认为 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
投票

这就是我所做的:

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;    
        }
    }
}

0
投票
private void Utility_VisibleChanged(object sender, EventArgs e)
{
    if (this.Visible == true) {
     //* Form is being showed

           
    }else{
    //* Form is being hid 
           
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.