Wednesday, May 13, 2009

Prevent open inner form repeat in C#

ที่มา http://greatfriends.biz/webboards/msg.asp?id=8823

Method 1

foreach (Form frmTemp in this.MdiChildren)
{
//if (frmTemp.Name.Equals("Form2"))
if (frmTemp is Form2)
{
frmTemp.Activate();
// frmTemp.Select();
return;
}
}

Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();




Method 2
  • สร้างตัวแปรแบบ static int ไว้เก็บสถานะของ form ว่าถูกเปิดขึ้นหรือยัง ถ้ายังก็ทำการเปิด form นั้นซะเปลี่ยนสถานะให้ตัวแปร static int เราไปเป็นอีกค่า พอปิด form ก็เปลี่ยน static int คืนค่าเดิม อาไรประมาณนี้อ่ะ แต่รู้สึกว่าจะยุ่งยากไปปะเนี๋ยเรา ทำแบบ method 1 ดีกว่านะ

//form2State เป็น static int ค่าเริ่มต้นเป็น 0 ซึ่งประกาศไว้ที่ MenuForm อีกที ^^'
if (MenuForm.form2State == 0)
{
Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
MenuForm.form2State = 1;
}

// Form2.Designer.cs
protected override void Dispose(bool disposing)
{
MenuForm..form2State = 0;

if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

No comments:

Post a Comment

Popular Posts