Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何知道何时显示表单?_C#_Winforms_Events_Compact Framework - Fatal编程技术网

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

C# 我如何知道何时显示表单?,c#,winforms,events,compact-framework,C#,Winforms,Events,Compact Framework,我正在用.Net Compact Framework 2.0 SP2和.strong>开发一个Windows Mobile 5.0或更高版本的 我有一个WinForm,它只有一个自定义控件。我想在表单完成加载和显示控件后调用该自定义控件的方法 现在我使用激活事件,但每次关闭messagebox时都会抛出这些事件 在那一刻有什么事件发生吗 谢谢。我认为紧凑框架中没有显示事件,但您应该能够使用加载事件。将窗体的Visible属性设置为true,之后应该可以访问自定义控件 MyForm_Load(ob

我正在用.Net Compact Framework 2.0 SP2和.strong>开发一个Windows Mobile 5.0或更高版本的

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

现在我使用激活事件,但每次关闭messagebox时都会抛出这些事件

在那一刻有什么事件发生吗


谢谢。

我认为紧凑框架中没有显示事件,但您应该能够使用加载事件。将窗体的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
}

我认为紧凑框架中没有显示事件,但应该能够使用加载事件。将窗体的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
}

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

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

我就是这么做的:

1) 在窗体上创建一个虚拟的空pictureBox控件

2) 使用布尔变量告知在窗体的Load事件之后何时调用pictureBox的Paint事件,并调用my own OnShow()函数

这就是我所做的:

1) 在窗体上创建一个虚拟的空pictureBox控件

2) 使用布尔变量告知在窗体的Load事件之后何时调用pictureBox的Paint事件,并调用my own OnShow()函数


正如您在这里看到的:加载事件发生在表单第一次显示之前。我想在显示窗体及其控件时调用此方法。是的,我知道加载首先发生。但是,设置this.Visible=true;在加载事件中应该是一个可行的解决方法。我不明白你的意思。设置Visible=true后如何访问控件。我知道该控件是在将此属性设置为false的情况下创建的。然后我把加载事件设置为true,不是吗?你的表单有一个加载事件。在加载事件中,将表单可见属性设置为true。您的表单将立即对用户可见,这与显示属性是一样的。现在,您知道表单第一次被加载并可见了-当表单显示时,您可以执行您试图执行的任何操作,并且这种操作只会发生一次。听起来好像您正在显式地将表单设置为可见。如您在此处所见:加载事件发生在表单第一次显示之前。我想在显示窗体及其控件时调用此方法。是的,我知道加载首先发生。但是,设置this.Visible=true;在加载事件中应该是一个可行的解决方法。我不明白你的意思。设置Visible=true后如何访问控件。我知道该控件是在将此属性设置为false的情况下创建的。然后我把加载事件设置为true,不是吗?你的表单有一个加载事件。在加载事件中,将表单可见属性设置为true。您的表单将立即对用户可见,这与显示属性是一样的。现在您知道表单第一次被加载并可见了-当表单显示时,您可以做任何您想做的事情,并且这种情况只会发生一次。听起来好像您显式地将表单设置为可见。我认为这是一个糟糕的设计,请在激活事件时使用全局布尔变量来运行我的代码。如果您使用此选项hack,难道你不需要在表单的整个生命周期中管理布尔值吗?它不是一个全局变量,它只是表单的局部变量。这是一个很难管理的问题吗?别这么想。在一个类中有一个bool来告诉它是已经初始化了还是已经处理了以及其他事情,这是很正常的。标准的.NET表单有很多属性告诉我们它的状态。“IsDisposed”是黑客吗?不,我不这么认为我认为在激活事件时使用全局布尔变量来运行我的代码是一种糟糕的设计。如果使用这种方法,您不需要在表单的整个生命周期中管理布尔值吗?它不是全局变量,只是表单的局部变量。这是一个很难管理的问题吗?别这么想。在一个类中有一个bool来告诉它是已经初始化了还是已经处理了以及其他事情,这是很正常的。标准的.NET表单有很多属性告诉我们它的状态。“IsDisposed”是黑客吗?不,我不这么认为