今天不小心遇到一個(gè)有點(diǎn)弱智的問(wèn)題,當(dāng)然這個(gè)問(wèn)題基本對(duì)你沒(méi)有任何影響。
.NET FX 2.0 WinForm 提供了 Application.OpenForms 屬性,便于我們獲取已 "打開(kāi)" 的窗體。相信下面的代碼你非常熟悉。
這代碼會(huì)有問(wèn)題嗎?跟著我做……
創(chuàng)建 WinForm 項(xiàng)目,然后創(chuàng)建 Form1、Form2 兩個(gè)窗體,在 Form1 上添加一個(gè)按鈕,然后輸入上述事件代碼。注意,我們目前沒(méi)有修改任何 Form2 的設(shè)置。運(yùn)行一下,多次點(diǎn)擊按鈕,你看到了什么? 這就是我說(shuō)的問(wèn)題,F(xiàn)orm2 被多次創(chuàng)建,也就是說(shuō) Application.OpenForms["form2"] 始終返回 null。怎么會(huì)這樣?打開(kāi) Form2.Designer.cs,看看 InitializeComponent()。
倒~~~~ 自動(dòng)生成的代碼根本沒(méi)有 this.Name="Form2"。一旦更改 Form2.Size 或其他屬性,代碼才會(huì)變成下面這樣。
好了,小笑話到此結(jié)束。本文沒(méi)有多大實(shí)際意義,純粹搞笑~~~~~~
.NET FX 2.0 WinForm 提供了 Application.OpenForms 屬性,便于我們獲取已 "打開(kāi)" 的窗體。相信下面的代碼你非常熟悉。
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();
}
}
這代碼會(huì)有問(wèn)題嗎?跟著我做……
創(chuàng)建 WinForm 項(xiàng)目,然后創(chuàng)建 Form1、Form2 兩個(gè)窗體,在 Form1 上添加一個(gè)按鈕,然后輸入上述事件代碼。注意,我們目前沒(méi)有修改任何 Form2 的設(shè)置。運(yùn)行一下,多次點(diǎn)擊按鈕,你看到了什么? 這就是我說(shuō)的問(wèn)題,F(xiàn)orm2 被多次創(chuàng)建,也就是說(shuō) Application.OpenForms["form2"] 始終返回 null。怎么會(huì)這樣?打開(kāi) 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";
}
倒~~~~ 自動(dòng)生成的代碼根本沒(méi)有 this.Name="Form2"。一旦更改 Form2.Size 或其他屬性,代碼才會(huì)變成下面這樣。
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);
}
好了,小笑話到此結(jié)束。本文沒(méi)有多大實(shí)際意義,純粹搞笑~~~~~~
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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