WinApp C# จากโค้ดนี้ ผมอยากให้ มันรัน Form2_Load ก่อน ต้องทำยังไงครับ
อะ... เข้าใจผิด
ผมจะสร้างฟอร์มที่แสดงเฉพาะเมสเสจคอยเอาไว้
และใช้ฟอร์มที่เรียก ฟอร์มสอง เป็นตัวแสดง ฟอร์มสำหรัยแสดงเมสเสจ เวลาคอย
พอฟอร์มสองโหลดเสร็จก็สั่งปิด จาก on active
ประวัติการแก้ไข 2019-06-24 08:16:07 2019-06-24 08:22:32
Date :
2019-06-24 08:13:29
By :
Chaidhanan
Code (C#)
// FormMain
public function load_form(){
NewForm2 = Form2.Create();
}
public function after_load( Form2: ResultForm){
// สิ่งที่จะทำหลัง Form2 loadเสร็จ
}
// Form2:
public procedure Form2_Load(.....){
......
FormMain(this.parent).after_load(this);
}
ประมาณนี้ ไวยกรณ์ไม่แน่ใจนะครับ ตอนนี้กำลังเบลอ เพราะเขียน pascal อยู่อาจสับสน 555555
Date :
2019-06-24 09:30:39
By :
Chaidhanan
คุณอยากรู้ไหมว่าผมชอบคุณตรงไหน?
+55555
ผมให้คุณเดา
ปล. งานก็คืองาน สันดานก็คือสันดาน ผมชอบสันดานของคุณ
Date :
2019-06-26 16:47:52
By :
หน้าฮี
ถ้าต้องการให้ Form2 รันเป็นฟอร์มแรกของโปรแกรม ส่งผ่านเมธอด Run() ใน Program.cs
Application.Run("Form2 ");
แต่ถ้าเรียกจากฟอร์มอื่น แต่ไม่ใช่ฟอร์มแรก ก็ Load ธรรมดาเลยครับ(รึเปล่า )
Date :
2019-07-01 14:05:27
By :
PhrayaDev
ปกติขั้นตอนการทำงานของโปรแกรม มักจะเริ่มที่ Main() ก่อนแล้ววิ่งไปอ่าน Component(แน่นอนว่ารวม Event Load อยู่ด้วย) โดยจะเริ่มอ่านจากตัวแม่ก่อน(ในที่นี้คือ Form1) แต่ก็เพราะ Form2 รับช่วงมาจาก Form1(ไม่ใช่ Form ซึ่งเป็น Clean Form) ซึ่งมี MessageBox.Show() อยู่ใน Event Load ด้วย ผลที่ได้ MessageBox.Show() จาก Form1 จึงแสดงก่อน...เพราะฉะนั้น ถ้าไม่อยากให้ MessageBox.Show() ของ Form1 แสดงก่อน ก็ย้ายให้มันมาอยู่หลัง Event Load ของ Form2 สิครับ
1. ใน Form1.Designer.cs
ทุบอีเวนต์ Load ของ Form1 (C#)
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(282, 253);
this.Name = "Form1";
this.Text = "Form1";
//this.Load += new System.EventHandler(this.Form1_Load); ถอดออกหรือคอมเมนต์
this.ResumeLayout(false);
}
2. Form1.cs
เปลี่ยนสิทธิ Event Load เป็น "public" (C#)
// เพื่อให้เรียกใช้จาก Form2 ได้
public void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Form1_Load");
}
3. Form2.cs
ย้าย Event มาไว้ Form2 (C#)
private void Form2_Load(object sender, EventArgs e)
{
MessageBox.Show("Form2_Load");
// จะให้ Event Load ของคลาส Form1 เริ่มตอนไหนก็จัดเลย(ถีบมันไปล่างสุดเลยก็ได้)
Load += new EventHandler(Form1_Load);
}
4. Run2C
ลองไปปรับใช้ดูครับ อาจสำเร็จหรือไม่สำเร็จก็ได้ แต่ตามหลักก็ไม่น่าจะมีปัญหา เหลือแค่เช็ดรายละเอียด
Date :
2019-07-01 15:32:05
By :
PhrayaDev
Load balance : Server 02