今天不小心遇到一個有點弱智的問題,當然這個問題基本對你沒有任何影響。
.NET FX 2.0 WinForm 提供了 Application.OpenForms 屬性,便于我們獲取已 "打開" 的窗體。相信下面的代碼你非常熟悉。
這代碼會有問題嗎?跟著我做……
創建 WinForm 項目,然后創建 Form1、Form2 兩個窗體,在 Form1 上添加一個按鈕,然后輸入上述事件代碼。注意,我們目前沒有修改任何 Form2 的設置。運行一下,多次點擊按鈕,你看到了什么? 這就是我說的問題,Form2 被多次創建,也就是說 Application.OpenForms["form2"] 始終返回 null。怎么會這樣?打開 Form2.Designer.cs,看看 InitializeComponent()。
倒~~~~ 自動生成的代碼根本沒有 this.Name="Form2"。一旦更改 Form2.Size 或其他屬性,代碼才會變成下面這樣。
好了,小笑話到此結束。本文沒有多大實際意義,純粹搞笑~~~~~~
.NET FX 2.0 WinForm 提供了 Application.OpenForms 屬性,便于我們獲取已 "打開" 的窗體。相信下面的代碼你非常熟悉。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form form = Application.OpenForms["form2"];
if (form == null)
{
form = new Form2();
}
form.Show();
form.BringToFront();
}
}
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form form = Application.OpenForms["form2"];
if (form == null)
{
form = new Form2();
}
form.Show();
form.BringToFront();
}
}
這代碼會有問題嗎?跟著我做……
創建 WinForm 項目,然后創建 Form1、Form2 兩個窗體,在 Form1 上添加一個按鈕,然后輸入上述事件代碼。注意,我們目前沒有修改任何 Form2 的設置。運行一下,多次點擊按鈕,你看到了什么? 這就是我說的問題,Form2 被多次創建,也就是說 Application.OpenForms["form2"] 始終返回 null。怎么會這樣?打開 Form2.Designer.cs,看看 InitializeComponent()。
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form2";
}
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form2";
}
倒~~~~ 自動生成的代碼根本沒有 this.Name="Form2"。一旦更改 Form2.Size 或其他屬性,代碼才會變成下面這樣。
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(711, 427);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);
}
{
this.SuspendLayout();
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(711, 427);
this.Name = "Form2";
this.Text = "Form2";
this.ResumeLayout(false);
}
好了,小笑話到此結束。本文沒有多大實際意義,純粹搞笑~~~~~~
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
