Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > เรียก Method อีก class นึงเพื่อให้ทํา Enable = true ปุ่มกลับมาใช้งานได้ ไม่ได้หรอครับ



 

เรียก Method อีก class นึงเพื่อให้ทํา Enable = true ปุ่มกลับมาใช้งานได้ ไม่ได้หรอครับ

 



Topic : 109323



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์




ผมมี 2 class มี 2 form

class1 frm = ตัวนี้จะมีปุ่มแล้วเมื่อทําการคลิก Enabled = false ไว้ครับ แล้วจะไปเรียก frm2
class2 frm2 = เมื่อปิด X ไปจะให้ไป Enabled = true ครับ

ตัวอย่างแบบบนทําได้ไหมครับ

(Class อยู่คนละไฟล์กันนะครับ)



Tag : .NET







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-06-19 21:02:55 By : kenghockey View : 2871 Reply : 14
 

 

No. 1



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


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
 


 

No. 2



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : H2013 เมื่อวันที่ 2014-06-19 22:10:16
รายละเอียดของการตอบ ::
ถ้าเป็น C# ล่ะครับ

Code (C#)
Class 1
private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            Form2 frm = new Form2();
            frm.MdiParent = Main.ActiveForm;
            frm.Show();
        }
public void BtnEnabled()
        {
            this.button1.Enabled = true;
        }

Class 2
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Form1 frm = new Form1();
            frm.BtnEnabled();
        }



แบบนี้พอกด Close Form 2 แล้วปุ่มมันยังปิดอยู่ครับ
ถ้าจะให้ใส่ Form1.Button1.Enabled = false; มันใส่ไม่ได้ครับมันไม่เจอ ปุ่ม


ประวัติการแก้ไข
2014-06-19 22:28:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-19 22:21:11 By : kenghockey
 

 

No. 3



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าเป็น C# ต้องถามแอดมิน ครับ
ผมทำแค่ระบบ .Net
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-19 22:33:41 By : H2013
 


 

No. 4



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


เมื่อคุณสร้างฟอร์มขึ้นมา 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 : หน้าฮี
 


 

No. 5



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ผมเล่าอะไรให้คุณฟังสักอย่างหนึ่ง ข้อแตกต่างระหว่างโปรแกรมของผมและของคนอื่นนั่นคือ
โปรแกรมของผมมันมีชีวิต Sourcecode ทุกฯบรรทัด มันปะปนไปด้วยความสุข ความเศร้า ผิดหวัง สมหวัง, etc...
ผมแสดงออกและใส่ลงไปในนั้น ซึ่งก็คงไม่แตกต่างกับจิตรกรวาดภาพครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 05:08:50 By : หน้าฮี
 


 

No. 6



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


Access modifiers

คำสั่ง internal ของ C# ชัดเจนดีครับ ถ้าเป็นฝั่ง VB ใช้คำว่า Friends
ผมว่ามันกำกวม (ผมแอบเซ็งเหมือนกัน)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 05:35:54 By : หน้าฮี
 


 

No. 7



โพสกระทู้ ( 697 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ด้วยความเคารพครับ คุณ หน้าฮี การพูดการจาคุณเหมือนคุณ ผ่านมา ที่อยู่ในบอร์ดนี้มากเลย อาร์ตเหมือนกัน

ผมขอตอบแบบตรงประเด็นเลยนะครับ สานต่อจากคุณ หน้าฮี เมื่อเราเข้าไปในหน้า 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
 


 

No. 8



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์


สุดยอดครับ ผมสงสัยอีกข้อครับในลักษณะคล้ายกัน แต่มันเป็นการเรียก method ใน form เพื่อ bind ข้อมูลหลังจาก add ข้อมูลที่ form 2 เสร็จ ครับ
มันนิ่งเงียบไม่แสดงข้อมูลล่าสุดืี่ add ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 19:02:12 By : kenghockey
 


 

No. 9



โพสกระทู้ ( 697 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอบความคิดเห็นที่ : 8 เขียนโดย : kenghockey เมื่อวันที่ 2014-06-20 19:02:12
รายละเอียดของการตอบ ::
ตอนเรา Bind ข้อมูลมา เราต้อง Select มาใช่ไหมครับ การทำงานตรงนั้นแหละครับ ทำซ้ำอีกรอบหลังจาก Insert

จะเก็บไว้ในเมธอด BindData() อะไรก็แล้วแต่จะออกแบบเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 19:07:26 By : 01000010
 


 

No. 10



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์


frm

จากรูปครับผมทําตามที่บอกเรื่อง 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
 


 

No. 11



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : kenghockey เมื่อวันที่ 2014-06-20 19:57:55
รายละเอียดของการตอบ ::

จาก #NO7 คุณลองเทียบดูครับ
(เป็นเพราะอะไร? )
Code (C#)
        protected override void OnClosed(EventArgs e)
        {
            foreach (Form cf in this.MdiParent.MdiChildren) {
                if (cf.Name == "Form1") {
                    ((Form1)cf).button1.Enabled = true;
                }
            }
            base.OnClosed(e);
        }


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 21:17:33 By : หน้าฮี
 


 

No. 12



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-06-20 21:17:33
รายละเอียดของการตอบ ::
งงอยู่ครับ ผมไม่รู้ว่าจะต้องเอาไปใส่ไว้ที่หน้าไหนครับ
1. ฟอร์มแม่
2. ฟอร์มลูก
3. ฟอร์มลูก ของ ฟอร์มลูก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 22:53:24 By : kenghockey
 


 

No. 13



โพสกระทู้ ( 1,195 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-06-20 21:17:33
รายละเอียดของการตอบ ::
ได้แล้วครับขอบพระคุณมากครับ ถ้าเป็นไปได้ช่วยอธิบายการทํางานตรงนี้ให้ทีได้ไหมครับ

*ผมใส่ไว้ใน Form ลูกของลูก เมื่อกดปิด FORM 1 button1 จะกลับไปใช้งานได้
Code (C#)
 private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            foreach (Form cf in this.MdiParent.MdiChildren)
            {
                if (cf.Name == "Form1")
                {
                    ((Form1)cf).button1.Enabled = true;
                }
            }
            base.OnClosed(e);
        }



มีเพิ่มเติมในส่วนของ NO. 8 เป็นเช่นกันครับ แต่ตัวนั้นจะเป็นการเรียกให้แสดง ข้อมูลล่าสุดหลังจากมีการ INSERT ไปครับ (อยู่คนละฟอร์มเช่นกันครับ)

ผมได้นําโค๊ด คุณฮี มาประยุกต์มันเลยทํางานได้ครับ


ประวัติการแก้ไข
2014-06-20 23:43:32
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-20 23:22:27 By : kenghockey
 


 

No. 14



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


Code
ได้แล้วครับขอบพระคุณมากครับ ถ้าเป็นไปได้ช่วยอธิบายการทํางานตรงนี้ให้ทีได้ไหมครับ

มันไม่มีประโยชน์ที่ผมจะอธิบายว่า จังหวัดสงขลาอยู่ในภาคใต้ เพราะความจริงมันเป็นอย่างนั้นอยู่แล้ว


Code
มีเพิ่มเติมในส่วนของ NO. 8 เป็นเช่นกันครับ แต่ตัวนั้นจะเป็นการเรียกให้แสดง ข้อมูลล่าสุดหลังจากมีการ INSERT ไปครับ (อยู่คนละฟอร์มเช่นกันครับ)


เคยได้ยินประโยคนี้ไหมครับ "ขี่ช้างไล่จับตักกะแตน" จะ Update ข้อมูลที่พึ่งจะถูกแก้ไขแค่ระเบียนเดียว แล้ว
ต้องไป Select * From TableXXX มาใหม่

ความจริง ต่อให้ข้อมูลในตารางจะมีเป็นร้อยเป็นพันคอลัมภ์(Columns) แต่เรามักจะเลือกเอาเฉพาะที่สำคัญฯมาแสดงเพียงไม่กี่คอลัมภ์ อทิเช่น
รหัสนักศึกษา ชื่อ นามสกุล ที่อยู่ เป็นต้น ไม่มีมากไปกว่านี้ครับ

หลักการ หาตำแหน่งระเบียน (RowIndex) ของ Grid/Table/UI_Design ให้ได้และ Update ลงไปใน UI Design
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-06-21 08:54:27 By : หน้าฮี
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : เรียก Method อีก class นึงเพื่อให้ทํา Enable = true ปุ่มกลับมาใช้งานได้ ไม่ได้หรอครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่