ปฏิสัมพันธ์ระหว่างแบบฟอร์ม การเพิ่มแบบฟอร์ม การโต้ตอบระหว่างแบบฟอร์ม สร้างรายการเดียวหรือแบบฟอร์มรายละเอียด

หากคุณมีรูปแบบยาวสำหรับหลายรายการ บางครั้งคุณอาจต้องการเจาะลึกข้อมูลอย่างรวดเร็วเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับรายการใดรายการหนึ่ง ใน Access จำเป็นต้องมีการสร้างลิงก์ระหว่างแบบฟอร์มสำหรับองค์ประกอบต่างๆ และแบบฟอร์มสำหรับแต่ละองค์ประกอบ เมื่อคุณเลือกรายการในแบบฟอร์มหลายรายการ แบบฟอร์มรายการแต่ละรายการจะเปิดขึ้นและแสดงข้อมูลเพิ่มเติม

หมายเหตุ:

การสร้างแบบฟอร์ม

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

สร้างแบบฟอร์มตารางหรือแบบฟอร์มที่มีองค์ประกอบหลายรายการ

    ในบานหน้าต่างนำทาง ให้เลือกตารางหรือคิวรีที่มีข้อมูลที่คุณต้องการแสดงในรูปแบบตาราง

    เลือกรายการ การสร้าง > รูปแบบอื่นๆและจากนั้น - หลายองค์ประกอบหรือ โต๊ะขึ้นอยู่กับประเภทของแบบฟอร์มที่ต้องการ

    บันทึกและปิดแบบฟอร์ม

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแบบฟอร์มหลายรายการ โปรดดูสร้างแบบฟอร์มโดยใช้เครื่องมือหลายรายการ

สร้างรายการเดียวหรือแบบฟอร์มรายละเอียด

    ในบานหน้าต่างนำทาง คลิกตารางหรือคิวรีที่มีข้อมูลที่คุณต้องการแสดงในฟอร์มรายละเอียด เป็นไปได้มากว่ามันจะเป็นตารางเดียวกันหรือแบบสอบถามเดียวกันกับที่คุณใช้สำหรับแบบฟอร์มแรก

    เลือกรายการ การสร้าง > รูปร่าง.

    ทำการเปลี่ยนแปลงที่จำเป็น บันทึก และปิดแบบฟอร์ม

สำหรับข้อมูลเพิ่มเติม โปรดดูสร้างแบบฟอร์มโดยใช้เครื่องมือแบบฟอร์ม

การเพิ่มตรรกะในการเปิดแบบฟอร์มรายละเอียด

ตอนนี้เรามาดูวิธีเพิ่มแมโครขนาดเล็กลงในแบบฟอร์มหลายรายการหรือตารางซึ่งจะเปิดแบบฟอร์มรายละเอียดและแสดงรายการที่ถูกต้อง

ไม่ต้องกังวลหากคุณไม่มีประสบการณ์กับมาโครมากนัก คุณสามารถคัดลอกและวางโค้ด XML จากขั้นตอนที่ให้ไว้ในบทความนี้ได้

    หากคุณกำลังใช้ฟอร์มตาราง ให้ดับเบิลคลิกในบานหน้าต่างนำทางเพื่อเปิด สำหรับฟอร์มหลายรายการ ให้คลิกขวาที่ฟอร์มในบานหน้าต่างนำทางแล้วเลือก โหมดเค้าโครง.

    กด F4 เพื่อเปิดหน้าต่าง Properties หากยังไม่ได้เปิดไว้

    คลิกคอลัมน์ที่คุณต้องการเพิ่มแมโคร นี่ควรเป็นคอลัมน์ที่เมื่อคลิกแล้วจะเปิดแบบฟอร์มรายละเอียดหลังจากเรียกใช้แมโคร ในภาพด้านบน แมโครได้ถูกเพิ่มลงในคอลัมน์ frmContactList แล้ว

คำแนะนำ:(เคล็ดลับ) คุณสามารถเพิ่มมาโครลงในหลายคอลัมน์ได้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแมโครในฐานข้อมูลคอมพิวเตอร์ ดู


เป็นที่ชัดเจนว่าหากคุณสร้างตัวชี้ชนิด<что там>::แบบฟอร์มใช้งานได้ แต่ฉันต้องการแบบฟอร์มที่สร้างไว้แล้ว พร้อมปุ่ม ฯลฯ (โดยทั่วไปมีการควบคุมที่แตกต่างกัน) แต่ฉันไม่ต้องการเขียนด้วยตนเอง (เช่นโดยทางโปรแกรม) ในรูปแบบที่สะอาดตา (มีการเขียนจำนวนมากและไม่ใช่ความจริงที่ว่าคุณจะได้รับมันอย่างที่ควรจะเป็น) สิ่งที่ยังทำให้ฉันสับสนคือ...... เมื่อฉันเพิ่มแบบฟอร์มลงในโปรเจ็กต์ที่สร้างไว้แล้ว ในไฟล์ส่วนหัวใหม่ Form2.h มันเขียนดังนี้:

#ปรมัตถ์ครั้งหนึ่ง
#รวม "Form1.h"

การใช้ระบบเนมสเปซ



ใช้เนมสเปซ System::Data;

เนมสเปซ My1 (

///
/// สรุปแบบฟอร์ม 2



คลาสอ้างอิงสาธารณะ Form2: public System::Windows::Forms::Form
{
สาธารณะ:
แบบฟอร์ม 2 (เป็นโมฆะ)
{
เตรียมใช้งานส่วนประกอบ();

}

ได้รับการคุ้มครอง:

~ฟอร์ม2()
{
ถ้า (ส่วนประกอบ)
{
ลบส่วนประกอบ
}
}

ส่วนตัว:



///
{
สิ่งนี้ -> ส่วนประกอบ = gcnew ระบบ :: ComponentModel :: คอนเทนเนอร์ ();
นี้ -> ขนาด = ระบบ :: การวาดภาพ :: ขนาด (300,300);
นี่ -> ข้อความ = L "Form2";
นี้ -> Padding = System::Windows::Forms::Padding(0);
นี้->
}
#ปรากเมนภูมิภาค
};
}

แม้ว่าใน Form1.h จะเขียนดังนี้:

#ปรมัตถ์ครั้งหนึ่ง
#รวม "Form2.h"

เนมสเปซ My1 (

การใช้ระบบเนมสเปซ
ใช้เนมสเปซ System::ComponentModel;
ใช้เนมสเปซ System::Collections;
ใช้เนมสเปซ System::Windows::Forms;
ใช้เนมสเปซ System::Data;
ใช้ระบบเนมสเปซ :: การวาดภาพ;

///
/// สรุปแบบฟอร์ม 1
/// คำเตือน: หากคุณเปลี่ยนชื่อคลาสนี้ คุณจะต้องเปลี่ยน
/// คุณสมบัติ "ชื่อไฟล์ทรัพยากร" สำหรับเครื่องมือคอมไพเลอร์ทรัพยากรที่ได้รับการจัดการ
/// เชื่อมโยงกับไฟล์ .resx ทั้งหมดซึ่งคลาสนี้ขึ้นอยู่กับ มิฉะนั้น,
/// ผู้ออกแบบจะไม่สามารถโต้ตอบกับภาษาท้องถิ่นได้อย่างถูกต้อง
/// ทรัพยากรที่เกี่ยวข้องกับแบบฟอร์มนี้
คลาสอ้างอิงสาธารณะ Form1: สาธารณะ System::Windows::Forms::Form
{
สาธารณะ:
แบบฟอร์ม 1 (เป็นโมฆะ)
{
เตรียมใช้งานส่วนประกอบ();
//สิ่งที่ต้องทำ: เพิ่มโค้ดตัวสร้างที่นี่
}

ได้รับการคุ้มครอง:
/// ทำความสะอาดทรัพยากรใด ๆ ที่ใช้
~ฟอร์ม1()
{
ถ้า (ส่วนประกอบ)
{
ลบส่วนประกอบ
}
}
ส่วนตัว: ระบบ :: Windows :: แบบฟอร์ม :: ปุ่ม ^ ปุ่ม 1;
ได้รับการคุ้มครอง:

ส่วนตัว:
/// ตัวแปรตัวออกแบบที่จำเป็น
ระบบ::ComponentModel::คอนเทนเนอร์ ^ส่วนประกอบ;

#pragma ภูมิภาค Windows Form Designer สร้างโค้ดแล้ว
/// วิธีการที่จำเป็นสำหรับการสนับสนุน Designer - ห้ามแก้ไข
/// เนื้อหาของวิธีนี้ด้วยโปรแกรมแก้ไขโค้ด
เป็นโมฆะ InitializeComponent (เป็นโมฆะ)
{
นี่ -> ปุ่ม 1 = (ระบบ gcnew :: Windows :: แบบฟอร์ม :: ปุ่ม ());
นี้ -> SuspendLayout();
// ปุ่ม 1
นี้ -> ปุ่ม 1 -> ตำแหน่ง = ระบบ :: การวาด :: จุด (60, 76);
นี้->button1->ชื่อ = L"button1";
นี้ -> ปุ่ม 1 -> ขนาด = ระบบ :: การวาดภาพ :: ขนาด (75, 23);
นี่ -> ปุ่ม 1 -> TabIndex = 0;
นี้->button1->ข้อความ = L"button1";
นี้ -> ปุ่ม 1 -> UseVisualStyleBackColor = จริง;
นี้->button1->คลิก += gcnew System::EventHandler(นี่, &Form1::button1_Click);
//แบบฟอร์ม1
นี้ -> AutoScaleDimensions = ระบบ :: การวาดภาพ :: SizeF (6, 13);
นี้ -> AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
นี่ -> ClientSize = System:: Drawing::Size (292, 266);
นี่ -> การควบคุม -> เพิ่ม (นี่ -> ปุ่ม 1);
นี่ -> ชื่อ = L "Form1";
นี่ -> ข้อความ = L "Form1";
นี้ -> ResumeLayout (เท็จ);

}
#ปรากเมนภูมิภาค

ระบบคงที่::Windows::แบบฟอร์ม::แบบฟอร์ม ^frm = gcnew ระบบ::Windows::แบบฟอร์ม::แบบฟอร์ม();
ส่วนตัว: System::Void button1_Click (System::Object^ ผู้ส่ง System::EventArgs^ e) (
จาก->แสดง();
}
};
}

การเชื่อมต่อ NAMESPACE ถูกระบุในสถานที่ที่แตกต่างกัน!

อัปเดตล่าสุด: 31/10/2558

หากต้องการเพิ่มแบบฟอร์มอื่นให้กับโปรเจ็กต์ ให้คลิกขวาที่ชื่อโปรเจ็กต์ในหน้าต่าง Solution Explorer และเลือก Add->Windows Form...

ลองตั้งชื่อฟอร์มใหม่บ้าง เช่น Form2.cs:

ดังนั้นเราจึงได้เพิ่มแบบฟอร์มที่สองให้กับโครงการของเรา ตอนนี้เรามาลองใช้การโต้ตอบระหว่างสองรูปแบบกัน สมมติว่าแบบฟอร์มแรกจะเรียกแบบฟอร์มที่สองเมื่อมีการคลิกปุ่ม ขั้นแรก ให้เพิ่มปุ่มลงในแบบฟอร์มแรก Form1 และดับเบิลคลิกที่ปุ่มเพื่อไปยังไฟล์โค้ด ดังนั้น เราจะถูกนำไปที่ตัวจัดการเหตุการณ์การคลิกของปุ่ม ซึ่งสร้างขึ้นตามค่าเริ่มต้นหลังจากดับเบิลคลิกที่ปุ่ม:

โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ EventArgs e) ()

ตอนนี้เรามาเพิ่มโค้ดสำหรับการเรียกแบบฟอร์มที่สองลงไป แบบฟอร์มที่สองของเราเรียกว่า Form2 ดังนั้นก่อนอื่นเราสร้างอ็อบเจ็กต์ของคลาสนี้ จากนั้นเพื่อแสดงมันบนหน้าจอ เราเรียกเมธอด Show:

โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ EventArgs e) ( Form2 newForm = new Form2(); newForm.Show(); )

ทีนี้ลองทำตรงกันข้าม - เพื่อให้รูปแบบที่สองส่งผลต่อรูปแบบแรก ในขณะที่รูปที่สองไม่รู้เรื่องการมีอยู่ของรูปแรก ในการแก้ไขปัญหานี้ คุณจะต้องถ่ายโอนข้อมูลเกี่ยวกับแบบฟอร์มแรกไปยังแบบฟอร์มที่สอง ในการดำเนินการนี้ เราจะใช้การส่งลิงก์ไปยังแบบฟอร์มในตัวสร้าง

มาดูแบบฟอร์มที่สองแล้วไปที่โค้ดของมัน - คลิกขวาที่แบบฟอร์มแล้วเลือกดูโค้ด สำหรับตอนนี้มันว่างเปล่าและมีเพียงตัวสร้างเท่านั้น เนื่องจาก C# รองรับการโอเวอร์โหลดเมธอด เราจึงสามารถสร้างเมธอดและคอนสตรัคเตอร์ได้หลายวิธีด้วยพารามิเตอร์ที่แตกต่างกัน และเรียกหนึ่งในนั้นขึ้นอยู่กับสถานการณ์ ดังนั้น เรามาเปลี่ยนไฟล์โค้ดของแบบฟอร์มที่สองเป็นดังนี้:

การใช้ระบบ; ใช้ System.Collections.Generic; โดยใช้ System.ComponentModel; ใช้ System.Data; โดยใช้ระบบการวาดภาพ; ใช้ System.Linq; ใช้ System.Text; ใช้ System.Threading.Tasks; โดยใช้ System.Windows.Forms; เนมสเปซ HelloApp ( คลาสสาธารณะบางส่วน Form2: ฟอร์ม ( public Form2() ( InitializeComponent(); ) สาธารณะ Form2(Form1 f) ( InitializeComponent(); f.BackColor = Color.Yellow; ) ) )

ที่จริงแล้ว เราเพิ่งเพิ่มตัวสร้างใหม่ที่นี่ public Form2(Form1 f) ซึ่งเราได้แบบฟอร์มแรกและตั้งค่าพื้นหลังเป็นสีเหลือง ตอนนี้เรามาดูโค้ดของแบบฟอร์มแรกกัน โดยที่เราเรียกแบบฟอร์มที่สองและเปลี่ยนเป็นโค้ดต่อไปนี้:

โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ EventArgs e) ( Form2 newForm = new Form2 (นี้); newForm.Show (); )

เนื่องจากในกรณีนี้ คำหลักนี้แสดงถึงการอ้างอิงถึงวัตถุปัจจุบัน - วัตถุ Form1 จากนั้นเมื่อสร้างแบบฟอร์มที่สอง จะได้รับ (ลิงก์) และควบคุมแบบฟอร์มแรกผ่านมัน

ตอนนี้หลังจากคลิกปุ่มแล้ว แบบฟอร์มที่สองจะถูกสร้างขึ้นซึ่งจะเปลี่ยนสีของแบบฟอร์มแรกทันที

เรายังสามารถสร้างวัตถุในรูปแบบปัจจุบันได้:

โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ EventArgs e) ( Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

เมื่อทำงานกับหลายรูปแบบ คุณต้องคำนึงว่าหนึ่งในนั้นคือรูปแบบหลัก - ซึ่งเปิดตัวก่อนในไฟล์ Program.cs หากเราเปิดแบบฟอร์มหลายรายการพร้อมกัน เมื่อเราปิดแบบฟอร์มหลัก แอปพลิเคชันทั้งหมดจะปิดลงและปิดแบบฟอร์มอื่นๆ ทั้งหมดไปด้วย