|
|
|
เรียก Method อีก class นึงเพื่อให้ทํา Enable = true ปุ่มกลับมาใช้งานได้ ไม่ได้หรอครับ |
|
|
|
|
|
|
|
Form 1
Code (VB.NET)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.Enabled = False
Form2.Show()
End Sub
Form 2
Code (VB.NET)
Private Sub Form2_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Form1.Button1.Enabled = True
End Sub
|
|
|
|
|
Date :
2014-06-19 22:10:16 |
By :
H2013 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าเป็น C# ต้องถามแอดมิน ครับ
ผมทำแค่ระบบ .Net
|
|
|
|
|
Date :
2014-06-19 22:33:41 |
By :
H2013 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เมื่อคุณสร้างฟอร์มขึ้นมา 1 ฟอร์ม และลาก Control Button มาวาง สมมุติชื่อ frmABC และปุ่ม btnABC
สิ่งที่คุณจะได้มาโดยอัตโนมัตินั่นคือ (show all)
1. frmABC.cs
2. frmABC.Designer.cs
3. frmABC.resx
ถ้าคุณต้องการอ้างแบบนี้ ถ้าจะให้ใส่ Form1.Button1.Enabled = false
ให้คุณเปิดไฟล์ frmABC.Designer.cs และแก้ไขคำว่า
internal หรือ private เป็น public System.Windows.Forms.Button
และจากกระทู้ก่อนหน้านี้ของคุณผมรวบยอดมาไว้ตรงนี้เลยก็แล้วกันครับ
คุณต้องมีความพยายามมากกว่านี้ครับ โดยเอา sourcecode ของผมไปวางบน MDIParent Form ของคุณและแก้ไขตามนั้น
|
|
|
|
|
Date :
2014-06-20 05:02:03 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมเล่าอะไรให้คุณฟังสักอย่างหนึ่ง ข้อแตกต่างระหว่างโปรแกรมของผมและของคนอื่นนั่นคือ
โปรแกรมของผมมันมีชีวิต Sourcecode ทุกฯบรรทัด มันปะปนไปด้วยความสุข ความเศร้า ผิดหวัง สมหวัง, etc...
ผมแสดงออกและใส่ลงไปในนั้น ซึ่งก็คงไม่แตกต่างกับจิตรกรวาดภาพครับ
|
|
|
|
|
Date :
2014-06-20 05:08:50 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Access modifiers
คำสั่ง internal ของ C# ชัดเจนดีครับ ถ้าเป็นฝั่ง VB ใช้คำว่า Friends
ผมว่ามันกำกวม (ผมแอบเซ็งเหมือนกัน)
|
|
|
|
|
Date :
2014-06-20 05:35:54 |
By :
หน้าฮี |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ด้วยความเคารพครับ คุณ หน้าฮี การพูดการจาคุณเหมือนคุณ ผ่านมา ที่อยู่ในบอร์ดนี้มากเลย อาร์ตเหมือนกัน
ผมขอตอบแบบตรงประเด็นเลยนะครับ สานต่อจากคุณ หน้าฮี เมื่อเราเข้าไปในหน้า Design ของ FormMDI
ให้เราไปปรับสิทธิ์การมองเห็นของปุ่มจาก Private เป็น Public เสียก่อนครับ
Form1.Designer.cs
Private System.Windows.Forms.Button button1;
//เปลี่ยนเป็น
Public System.Windows.Forms.Button button1;
หลังจากนั้นเมื่อเราคลิกปุ่มใน MDIForm
Form1.cs
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
}
ปุ่มก็จะเป็น Enabled = False; และกำหนด frm ใหม่ให้มี MdiParent คือ this (ตัวฟอร์ม MDI ณ ขณะนั้น)
และอย่าลืมสร้าง Event FormClosed ในฟอร์มลูก (Form2) เตรียมไว้เลย และใส่คำสั่งไว้เลยว่า
Form2.cs
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
Form1 frm = (Form1)this.MdiParent;
frm.button1.Enabled = true;
}
หลักการคือเมื่อเกิดการปิดฟอร์มลูก มันจะนำ Object Referent ที่เก็บอยู่ใน MdiParent ที่ได้กำหนดไว้จากตอนสร้างฟอร์มลูก
จะนำมาแปลงจาก Type Form ให้เป็น Form1 ก่อน เพื่อจะอ้างอิงถึง button1 ได้ (Polymorphism)
|
ประวัติการแก้ไข 2014-06-20 10:32:54
|
|
|
|
Date :
2014-06-20 10:29:00 |
By :
01000010 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดยอดครับ ผมสงสัยอีกข้อครับในลักษณะคล้ายกัน แต่มันเป็นการเรียก method ใน form เพื่อ bind ข้อมูลหลังจาก add ข้อมูลที่ form 2 เสร็จ ครับ
มันนิ่งเงียบไม่แสดงข้อมูลล่าสุดืี่ add ครับ
|
|
|
|
|
Date :
2014-06-20 19:02:12 |
By :
kenghockey |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จากรูปครับผมทําตามที่บอกเรื่อง Button อ่ะครับ
ปัญหายังไม่หายครับ
1. ผมคลิกที่ปุ่ม ทดสอบ Form นี้เป็น Mdiparent
2. จะแสดง Form 1 และจะมีปุ่ม Button ขึ้นมา
3. กดที่ปุ่ม Button แล้วจะแสดง Form 2 และปุ่มจะ Enabled = false
4. กด X close ที่ Form 2
5. ปัญหาคอ ปุ่ม Button ยังเป็น Enabled = false อยู่ครับ
ซึ่งการเขียนก็เหมือนกับที่บอกผมทุกอย่างเพียงแต่ 1ไฟล์ เท่ากับ 1 Form
กรณีของผมคือ ฟอร์มแม่ -> ไปลูก -> ไปลูก ครับ
|
ประวัติการแก้ไข 2014-06-20 20:01:23 2014-06-20 20:01:43 2014-06-20 20:02:07 2014-06-20 20:02:08
|
|
|
|
Date :
2014-06-20 19:57:55 |
By :
kenghockey |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|