ผู้เขียน หัวข้อ: ผมมีปัญหาเรื่องการส่งค่าข้ามฟอร์มที่activeอยู่  (อ่าน 208 ครั้ง)

ออฟไลน์ janthoeun

  • Newbie
  • *
  • กระทู้: 6
สมมติว่าผมสร้างฟอร์มขึ้นมา3ฟอร์ม คือ ฟอร์มหลัก ฟอร์มลูกที่1 ฟอร์มลูกที่2
ถ้าเกิดว่าผมสั่งฟอร์มหลัก เปิดฟอร์มลูกทั้ง2ฟอร์มพร้อมกันเลย แล้วให้มันส่งค่าให้กันระว่างฟอร์มลูก  โดยไม่จำเป็นต้องNew ฟอร์มใหม่  ทำได้หรือเปล่าอะครับ
ผมลองใช้​สร้างตัวแปร แบบ public หรือ global แล้วส่งให้กัน  หรือแม้แต่สร้างบนmodul แล้วอ้างอิ่งฟอร์ม มันก็ยังไม่ได้  ต้องทำยังไงดี  ท่านผู้รู้ โปรดชี้แน่ะด้วยขอรับอ :-[ :-[

บันทึกการเข้า

ออฟไลน์ ทองก้อน ทับทิมกรอบ

  • Administrator
  • *****
  • กระทู้: 245
  • เพศ: ชาย
  • Webmaster G2GNet
Re: ผมมีปัญหาเรื่องการส่งค่าข้ามฟอร์มที่activeอยู่
« ตอบกลับ #1 เมื่อ: ตุลาคม 12, 2015, 10:20:11 pm »


คำถามไม่ค่อยเคลียร์ในรายละเอียดครับว่าจุดประสงค์เพื่อใช้ในงานอะไร เพราะปกติเราจะโฟกัสหรือพุ่งเป้างานกันอยู่แค่ 1 ฟอร์ม อย่างมากไม่เกิน 2 แต่นี่มีถึง 3 ฟอร์ม คือจะทำอะไรพร้อมกันได้ขนาดนั้น
ตัวอย่าง ...
จาก Form1 ส่งค่าไป Form2 ก็เหมือนนิพจน์ปกติ A = B คือค่าทางซ้าย รอรับจากค่าทางขวา เช่น
Form2.TextBox1.Text = Me.TextBox1.Text

บันทึกการเข้า
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

ออฟไลน์ janthoeun

  • Newbie
  • *
  • กระทู้: 6
Re: ผมมีปัญหาเรื่องการส่งค่าข้ามฟอร์มที่activeอยู่
« ตอบกลับ #2 เมื่อ: ตุลาคม 13, 2015, 12:59:23 pm »
สวัสดีครับอาจารย์ คือยังงี้อาจารย์ครับ โปรแกรมที่ผมกำลังทำ ก็มีประมาณนี้อะครับ
1.ผมจะสร้างtabcontrolใหม่ทุกครั้งเวลาเปิดฟอร์มใหม่
2.ผมเอาฟอร์มที่ต้องการไปยัดใส่ในtabcontrol เพื่อให้ได้ลักษณะคล้ายBrowser โดยเขียนโค้ดประมาณนี้
Dim newtab As TabItem = TabControl1.CreateTab("OutputForm")
Dim panel As TabControlPanel = DirectCast(newtab.AttachedControl, TabControlPanel)
        panel.Controls.Add(frmOutPut)
        TabControl1.SelectedTab = newtab
        Dim f3 As New frmOutPut()
        f3.Dock = DockStyle.Fill
        'f3.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
        f3.TopLevel = False
        panel.Controls.Add(f3)
        f3.Show()
------------------------------------------------------
ผลปรากฏว่า ผมเพิ่มข้อมูลระว่างฟอร์มที่เปิดอยู่แบบนี้ไม่ได้ครับ

มาดูภาพประกอบ ก็ออกมาประมาณนี้ครับ

นี่ฟอร์มเพิ่มข้อมูล:-


นี้ฟอร์มแสดงข้อมูล:-


 ปล.TabControl ที่เห็นอยู่นี้ ผมใช้toolsเสริมที่ไม่มีในVS ชื่อว่า DotNetBar

บันทึกการเข้า

ออฟไลน์ ทองก้อน ทับทิมกรอบ

  • Administrator
  • *****
  • กระทู้: 245
  • เพศ: ชาย
  • Webmaster G2GNet
Re: ผมมีปัญหาเรื่องการส่งค่าข้ามฟอร์มที่activeอยู่
« ตอบกลับ #3 เมื่อ: ตุลาคม 16, 2015, 10:15:35 am »


ผมอ่านแล้วก็พยายามจับใจความอยู่ตั้งนานทีเดียวว่าคำถามคืออะไร ... หากดูจากรูปผมก็เลยตีความเอาว่าต้องการให้ค่าต่างๆของ TextBox Control ที่อยู่ใน Tab InputForm มันไปอยู่ที่ OutputForm ด้วยเช่นกัน อย่างนี้ไม่เรียกว่าข้ามฟอร์มครับ มันอยู่ในฟอร์มเดียวกัน แต่เนื่องจากใช้ TabControl มันก็เลยอยู่กันคนละที่ของแท็บ (ตามชื่อ หรือ Index) ทีนี้ใน TabControl แต่ละตัวแต่ละยี่ห้อมันก็มี Properties หรือ Method ที่แตกต่างกันไป ...

ผมก็เลยเขียนคำสั่งง่ายๆ เพื่อทดสอบกับ TabControl มาตรฐานใน VS2010 ให้เห็นว่าการจะส่งข้อความจาก Tab1 ไป Tab2 ได้อย่างไร โดยอาศัยเหตุการณ์ที่เกิดการกดคีย์แล้วมีการเปลี่ยนแปลงก็แล้วกันครับ

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged

    ' อย่างที่บอกครับว่าเอาค่าทางขวามาใส่ทางซ้าย
    TabControl1.TabPages(1).Controls.Item("TextBox2").Text = Me.TextBox1.Text

End Sub

บันทึกการเข้า
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด