ดาวน์โหลดโปรแกรม Windows Forms วิธีเพิ่ม การเขียนโปรแกรมใน .NET Framework การทดสอบสำหรับ LoginPresenter
วันนี้ฉันอยากจะบอกคุณถึงวิธีสร้างโปรเจ็กต์ C++ Windows Forms ใน Visual Studio 2013 IDE ทางด้านขวา เริ่มจาก VS 2012 จากรายการโครงการที่สามารถสร้างได้ รายการ Windows Forms Addendum จะถูกลบออก ฉันกำลังพูดถึงสิ่งเหล่านั้นใน C ++ คุณสามารถสร้างโครงการดังกล่าวใน C # โดยเลือกตัวเลือกในการแจกจ่ายโครงการที่กำลังสร้าง อย่างไรก็ตาม ความจริงที่ว่าโครงการดังกล่าวไม่สามารถเลือกจากรายการไม่ได้พูดถึงโครงการที่ไม่สามารถสร้างได้ สำหรับตัวเองฉันต้องการขยายบทความนี้
สิ่งแรกที่คุณต้องทำคือเปิด Visual Studio ทันทีที่เปิดตัว VS จะถูกกดตามลำดับ File\u003e Create\u003e Project
หลังจากนั้นจะขอเลือกประเภทโครงการ เราจำเป็นต้องเลือกส่วนขยาย CLR ของ Visual C++ และเลือกโครงการ Empty CLR
หากโปรเจ็กต์ถูกสร้างขึ้น ในเบราว์เซอร์ โซลูชันจะถูกคลิกด้วยปุ่มเมาส์ขวาสำหรับโปรเจ็กต์ที่สร้างขึ้น ในเมนูบริบทที่ปรากฏขึ้นมาจะถูกเลือกตามลำดับ Add> Create Element และในเมนูที่ปรากฏขึ้นในส่วน UI จะเลือก Windows Forms Form
หากส่งแบบฟอร์ม ไฟล์ MyForm.cpp จะถูกเลือกในโซลูชันเบราว์เซอร์ ตรงหน้าคุณ แท็บใหม่ด้วยรหัสแถวเดียว:
#include "MyForm.h"
สำหรับไฟล์นี้ เราต้องเพิ่มโค้ดถัดไป:
การใช้ระบบเนมสเปซ; ใช้เนมสเปซ System::Windows::Forms; เป็นโมฆะ Main(array
มาฟังจากเจ้าหน้าที่ของโครงการกันครับ pіdrozdil .ที่เลือก ระบบแยกตัวสร้างและในแถว ระบบย่อย จากเมนู เลือก Windows (/SUBSYSTEM:WINDOWS) แล้วคลิก เริ่ม
โดยไม่ต้องลดอำนาจของโครงการ ไปที่ส่วนย่อยของ Dodatkovo และในแถว จุดเริ่มต้นเขียน หลักและหลังจากนั้นเราก็กดปุ่ม ตกลง.
โครงการใดจะแล้วเสร็จ หากต้องการแก้ไขรูปลักษณ์ปัจจุบันของแบบฟอร์ม ให้ไปที่แท็บ MyForm.h [ตัวสร้าง] โดยคลิกที่ไฟล์ MyForm.h ในเบราว์เซอร์โซลูชัน
ขอให้เป็นวันที่ดี!
Model-View-Presenter - นำเสนอเทมเพลตการออกแบบที่กำหนดเอง จากการมองแวบแรก ทุกอย่างดูเรียบง่าย: є model (รุ่น) ชอบที่จะแก้แค้นตรรกะทางธุรกิจทั้งหมดบนหน้าจอ ดู / ส่ง (ดู) ซึ่งคุณรู้วิธีแสดงข้อมูลอื่น ๆ เหล่านั้น ตัวแทน (ผู้นำเสนอ) ซึ่งเป็นผู้โชคดี - ตอบสนองต่อส่วนย่อยของคอริสตูวาชาในมุมมอง การเปลี่ยนโมเดล และนาฟปากิ
การพับจะเริ่มขึ้นหากจำนวนของแบบฟอร์มในโครงการมีมากขึ้นสำหรับหนึ่ง
บทความดูที่:
- ทฤษฎีทรอชี
- ปัญหาการเผาไหม้การใช้งาน MVP (โซเครมามุมมองแบบพาสซีฟ) ภายใต้ Windows Forms;
- คุณสมบัติของการดำเนินการเปลี่ยนระหว่างแบบฟอร์มและการถ่ายโอนพารามิเตอร์, หน้าต่างโมดอล;
- การเชื่อมโยงคอนเทนเนอร์ IoC กับ Dependency Injection - เทมเพลต DI (และ Constructor Injection เอง)
- คุณสมบัติเฉพาะของการทดสอบโปรแกรม MVP (สำหรับการทดสอบ NUnit และ NSubstitute)
- ทุกอย่างควรนำไปใช้กับตัวอย่างของโปรเจ็กต์ขนาดเล็กและมีแรงจูงใจ แต่เพื่อให้ถูกต้อง
บทความติดอยู่:
- อะแดปเตอร์เทมเพลต Zastosuvannya (อะแดปเตอร์);
- การใช้งานเทมเพลต Application Controller อย่างง่าย
บทความนี้สำหรับใคร?
อันดับหลักสำหรับผู้ค้าปลีก-pochatkivtsiv บน Windows Forms เช่น chuli แต่พวกเขาไม่ได้ลอง หรือพวกเขาลองแล้ว แต่ก็ไม่ได้ลอง ต้องการร้องเพลงdeyakіyi zastosovnіสำหรับ WPF และนำทางสำหรับการพัฒนาเว็บ
คำชี้แจงปัญหา
คิดงานง่าย ๆ - ใช้ 3 หน้าจอ:1) หน้าจอการอนุญาต;
2) หัวหน้าจอ;
3) หน้าจอ modal เพื่อเปลี่ยนชื่อของ koristuvach
มีความผิดในการเยี่ยมชม schos บน kshtalt tsyogo:
ทฤษฎีทรอชี
MVP เช่นเดียวกับพ่อทูนหัว MVC (Model-View-Controller) ของการประดิษฐ์เพื่อความชัดเจน การแบ่งตรรกะทางธุรกิจเป็นวิธีการแสดงภาพบนอินเทอร์เน็ต คุณสามารถดูการใช้งาน MVP ที่ไม่มีตัวตนได้ ตามวิธีการส่งข้อมูลเพื่อส่งข้อมูลสามารถแบ่งออกได้เป็น 3 ประเภท คือ
- มุมมองแบบพาสซีฟ: มุมมองเพื่อขจัดตรรกะขั้นต่ำในการแสดงข้อมูลดั้งเดิม (แถว, ตัวเลข) ผู้นำเสนอจะดูแลการตัดสินใจ
- รูปแบบการนำเสนอ: มุมมองสามารถส่งข้อมูลได้ไม่เพียงเท่านั้น แต่ยังรวมถึงวัตถุทางธุรกิจด้วย
- Supervising Controller: View รู้เกี่ยวกับการมีอยู่ของโมเดลและดึงข้อมูลจากมัน
มาดูการปรับเปลี่ยนมุมมองแบบพาสซีฟกัน มาอธิบายภาพวาดหลักกัน:
- อินเทอร์เฟซข้อมูล (IView) ซึ่งเป็นข้อตกลงที่ดีที่สุดสำหรับการแสดงข้อมูล
- ลักษณะที่ปรากฏ - การใช้งานเฉพาะของ IView ราวกับว่าสามารถแสดงตัวเองในอินเทอร์เฟซเฉพาะ (ทั้ง Windows Forms, WPF หรือเปิดคอนโซล) และไม่รู้อะไรเกี่ยวกับผู้ที่ใช้งาน มีรูปแบบที่แตกต่างกัน
- รุ่น - ให้ตรรกะทางธุรกิจกับตรรกะทางธุรกิจ (ใช้: เข้าถึงฐานข้อมูล ที่เก็บ บริการ) มันอาจจะถูกนำเสนอในคลาสอื่นหรืออีกครั้ง อินเทอร์เฟซและการใช้งาน
- ตัวแทนในการส่งข้อความไปยังการส่งผ่านอินเทอร์เฟซ (IView) ซึ่งต้องการให้เขาสมัครสมาชิกการส่งของคุณ zdiisnyuєการตรวจสอบอย่างง่าย (การตรวจสอบ) ของการป้อนข้อมูล; เพื่อแก้แค้นโมเดลหรืออินเทอร์เฟซ ถ่ายโอนข้อมูลจาก View และขออัปเดต
การดำเนินการตามปกติของตัวแทน
Presenter คลาสสาธารณะ (ส่วนตัวอ่านอย่างเดียว IView _view; IService ส่วนตัวแบบอ่านอย่างเดียว _service; ผู้นำเสนอสาธารณะ (มุมมอง IView, บริการ IService) ( _view = มุมมอง; _service = บริการ; _view.UserIdChanged += () => UpdateUserInfo(); ) โมฆะส่วนตัว) ( ผู้ใช้ var = _service.GetUser(_view.UserId); _view.Username = user.Username; _view.Age = user.Age; ) )
ข้อดีอะไรที่ทำให้เรามีการเชื่อมต่อคลาสน้อยที่สุด (อินเทอร์เฟซต่าง ๆ ย่อย)
1. ให้คุณเปลี่ยนตรรกะของส่วนประกอบใดๆ ได้อย่างอิสระโดยไม่ต้องตัดสินใจ
2. โอกาสที่ดีสำหรับการทดสอบหน่วย TDD shanuvalniks สามารถจับมือได้
มาทำกัน!
จะจัดระเบียบโครงการได้อย่างไร?
ให้คิดว่าการแก้ปัญหาเกิดขึ้นจาก 4 โครงการ:- DomainModel - บริการแก้แค้นและที่เก็บทั้งหมดในคำ - รุ่น;
- การนำเสนอ - เพื่อล้างแค้นตรรกะของรายงานเพื่อให้อยู่ในสายตาของการแสดงภาพ tobto ตัวแทนทั้งหมด อินเทอร์เฟซ ลักษณะที่ปรากฏ และคลาสพื้นฐานอื่น ๆ
- UI - ภาคผนวกของ Windows Forms, รูปแบบเพิ่มเติม (การใช้งานอินเทอร์เฟซ ลักษณะที่ปรากฏ) และตรรกะการเปิดตัว;
- การทดสอบ - การทดสอบหน่วย
จะเขียนอะไรใน Main()?
การใช้งานมาตรฐานของการรันโปรแกรม Windows Forms มีลักษณะดังนี้:โมฆะคงที่ส่วนตัว Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run (ใหม่ MainForm());
Ale mi ทำมันเพื่อให้ตัวแทนเครูบการปรากฏตัวที่เขาต้องการเพื่อให้รหัสมีลักษณะดังนี้:
โมฆะคงที่ส่วนตัว Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var presenter = new LoginPresenter(new LoginForm(), new LoginService()); // Dependency Injection presenter.Run(); )
มาลองใช้หน้าจอแรกกัน:
อินเทอร์เฟซพื้นฐาน
// วิธีการทั่วโลกของอินเทอร์เฟซสาธารณะทั้งหมดที่ปรากฏ IView ( void Show(); void Close(); ) // สัญญาซึ่งตัวแทนจะโต้ตอบกับรูปแบบอินเทอร์เฟซสาธารณะ ILoginView: IView ( สตริง ชื่อผู้ใช้ ( รับ; ) สตริง รหัสผ่าน ( รับ; ); ) เหตุการณ์ การดำเนินการ เข้าสู่ระบบ; // pod_ya "koristuvach พยายามเข้าสู่ระบบ" เป็นโมฆะ ShowError (ข้อความแสดงข้อผิดพลาดของสตริง); ) อินเทอร์เฟซสาธารณะ IPresenter ( void Run(); ) // บริการอนุญาตที่โง่ ส่วนต่อประสานสาธารณะ - การอนุญาตที่สำเร็จ มิฉะนั้น จะเป็นเท็จ )
ส่วย
คลาสสาธารณะ LoginPresenter: IPresenter ( ส่วนตัวอ่านอย่างเดียว ILoginView _view; ส่วนตัวอ่านอย่างเดียว ILoginService _service; สาธารณะ LoginPresenter (มุมมอง ILoginView, บริการ ILoginService) ( _view = ดู; _service = บริการ; _view.Login += () ดู .รหัสผ่าน); ) โมฆะสาธารณะ () ( _view.Show(); ) โมฆะส่วนตัวเข้าสู่ระบบ(ชื่อผู้ใช้สตริง, รหัสผ่านสตริง) (ถ้า (ชื่อผู้ใช้ == null) โยนค่า null ใหม่) โยนใหม่ ArgumentNullException("รหัสผ่าน"); ผู้ใช้ var = ผู้ใช้ใหม่ (ชื่อ = ชื่อผู้ใช้ รหัสผ่าน = รหัสผ่าน); if (!_service.Login(user)) else ( // อนุญาตสำเร็จ, เปิดหน้าจอหลัก (?) ) ) )
สร้างแบบฟอร์มและนำไปใช้ในอินเทอร์เฟซ ILoginView ไม่ว่าคุณจะเขียนการใช้งาน ILoginService อย่างไร ต่อไปนี้เป็นคุณลักษณะน้อยกว่าหนึ่งรายการ:
LoginForm คลาสบางส่วนสาธารณะ: Form, ILoginView ( // ... public new void Show() ( Application.Run(this); ) )
นี่คือคาถาที่อนุญาตให้ส่วนเสริมของเราเริ่มต้น แสดงแบบฟอร์ม และหลังจากปิดแบบฟอร์ม ให้กรอกโปรแกรมให้สมบูรณ์ มาหมุนกันจนกว่าจะถึงเวลานั้น
จะมีการทดลองหรือไม่?
ตั้งแต่วินาทีที่ตัวแทน (LoginPresenter) ถูกเขียนขึ้น ก็สามารถทำการทดสอบหน่วยโยคะได้ทันที โดยไม่ต้องใช้แบบฟอร์มใดๆ หรือบริการใดๆสำหรับการเขียนการทดสอบ ฉันเป็นผู้สนับสนุนไลบรารี NUnit และ NSubstitute (ไลบรารีสำหรับสร้างคลาส stub ที่อยู่เบื้องหลังอินเทอร์เฟซ จำลอง)
การทดสอบสำหรับ LoginPresenter
คลาสสาธารณะ LoginPresenterTests ( ILoginView ส่วนตัว _view; การตั้งค่าโมฆะสาธารณะ () ( _view = Substitute.For
การทดสอบ dosit bad ตราบใดที่ตัวโปรแกรมเอง เอลดังนั้น chi іnaksheก็ผ่านไปได้สำเร็จ
ใครและจะเปิดหน้าจออื่นด้วยพารามิเตอร์ได้อย่างไร?
อย่างที่คุณจำได้ ฉันไม่ได้เขียนรหัสที่ถูกต้องสำหรับการอนุญาตที่สำเร็จ ฉันจะเปิดหน้าจออื่นได้อย่างไร ประการแรกมันตกอยู่ที่ความคิด:// LoginPresenter: ล็อกอินสำเร็จ var mainPresenter = New MainPresenter(new MainForm()); mainPresenter.Run(ผู้ใช้);
Alemy ตระหนักว่าตัวแทนไม่รู้อะไรเลยเกี่ยวกับการสำแดงไครเมียของอินเทอร์เฟซของพวกเขา งานคืออะไร?
รูปแบบ Application Controller ได้รับการช่วยเหลือ (การใช้งานจะง่ายขึ้น) โดยตรงกลางจะมีคอนเทนเนอร์ IoC ซึ่งคุณรู้วิธีนำวัตถุของการใช้งานไปใช้หลังอินเทอร์เฟซ
Controller จะถูกส่งต่อไปยังตัวแทนสกินโดยพารามิเตอร์ Constructor (DI ใหม่) และใช้วิธีต่อไปนี้โดยประมาณ:
อินเทอร์เฟซสาธารณะ IApplicationController ( IApplicationController RegisterView
หลังจากปรับโครงสร้างใหม่เล็กน้อย การเปิดตัวโปรแกรมจะมีลักษณะดังนี้:
โมฆะคงที่ส่วนตัว Main() ( Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); // ทางเลือกทั้งหมดได้รับการลงทะเบียนในที่เดียว: var controller = new ApplicationController(new LightInjectAdapder()) .RegisterView
คำสองสามคำเกี่ยวกับ ApplicationController(new LightInjectAdapder()) ใหม่ เช่นเดียวกับคอนเทนเนอร์ IoC ฉันแฮ็คไลบรารี LightInject แต่ไม่ใช่โดยตรง แต่ผ่านอะแดปเตอร์ (รูปแบบอะแดปเตอร์) ดังนั้นหากคุณต้องการเปลี่ยนคอนเทนเนอร์เป็นอันอื่น ฉันสามารถเขียนอะแดปเตอร์อื่นและไม่เปลี่ยนตรรกะของ ตัวควบคุม วิธีการทั้งหมดที่ได้รับชัยชนะนั้นอยู่ในไลบรารี IoC ส่วนใหญ่ ถูกพับและไม่มีความผิด
มีการใช้งานอินเทอร์เฟซ IPresenter เพิ่มเติม ซึ่งมีโอกาสน้อยที่วิธี Run จะยอมรับพารามิเตอร์ เราจะค่อยๆ ลดมุมมองของแบบใหม่ เหมือนกับหน้าจอแรก
ตอนนี้เราเปิดหน้าจออื่นโดยปราศจากความภาคภูมิใจโดยผ่าน koristuvach ที่ได้รับอนุญาตที่นั่น:
Controller.Run
คุณไม่สามารถใช้และปิดแบบฟอร์มได้
หนึ่งในหินใต้น้ำในแถว View.Close() หลังจากที่แบบฟอร์มแรกถูกปิดและในขณะเดียวกันก็มีการเพิ่มจากมัน ทางด้านขวา Application.Run(Form) เรียกใช้ลูปการปลุกของ Windows มาตรฐานและดูที่แบบฟอร์มที่ส่งผ่านเป็นรูปแบบหลักของโปรแกรม เนื่องจากโปรแกรมหยุดการทำงาน ExitThread บน Form.Closed sub ซึ่งเรียกโปรแกรมให้ปิดหลังจากปิดแบบฟอร์มมีหลายวิธีในการแก้ไขปัญหานี้ หนึ่งในนั้นคือเปลี่ยนวิธีการ: Application.Run (ApplicationContext) จากนั้นแทนที่พลังของ ApplicationContext.MainForm การถ่ายโอนไปยังบริบทของแบบฟอร์มถูกนำมาใช้เพื่อความช่วยเหลือของตัวควบคุมโปรแกรม ซึ่งวัตถุ ApplicationContext (อินสแตนซ์) ได้รับการลงทะเบียนแล้วจึงส่งไปยังตัวสร้างแบบฟอร์ม (ฉันเริ่ม DI) เมื่อเริ่มต้นตัวแทน วิธีการแสดงสองหน้าจอแรกตอนนี้มีลักษณะดังนี้:
// LoginForm โมฆะใหม่สาธารณะ Show() ( _context.MainForm = this; Application.Run(_context); ) // MainForm public new void Show() ( _context.MainForm = this; base.Show(); )
หน้าต่างโมดอล
การใช้หน้าต่างโมดอลไม่ได้หมายถึงปัญหา ที่ปุ่ม "เปลี่ยนชื่อ" Controller.Run ถูกทำเครื่องหมายโมฆะใหม่สาธารณะ Show() ( ShowDialog(); )
เท่าที่จำเป็นในการจดจำความแตกต่าง วิธีการก็ไม่จำเป็นต้องเปลี่ยน เนื่องจากคลาส Form มีการใช้งานอยู่แล้ว
พวกเขาทำพลาด ... ตอนนี้ CE vikoristati เป็นอย่างไร?
ตอนนี้ หากเฟรมพร้อม การเพิ่มรูปแบบใหม่จะนำไปสู่ทางลัดดังกล่าว:- เราเขียนส่วนต่อประสานของ Appearance ซึ่งเป็นส่วนต่อประสานของ Model (ตามต้องการ)
- ตัวแทนสามารถทำได้โดย prima facie virishivshi เพื่อที่เราจะได้ถ่ายโอนข้อมูลนี้เป็นแบบจำลองใหม่
- [ไม่บังคับ] เราเขียนบททดสอบสำหรับตัวแทน เราจะเปลี่ยนใจ ทุกอย่างเรียบร้อยดี
- [ไม่บังคับ] โมเดลที่ใช้งานได้และทดสอบ
- เราให้แบบฟอร์มและใช้อินเทอร์เฟซของลักษณะที่ปรากฏ
คุณสามารถเลือกโครงการสาธิตจาก
ตอนนี้ถึงเวลาแล้วที่จะสร้างการเพิ่มที่ยอดเยี่ยมครั้งแรกของเรา
สิ่งสำคัญที่เห็นในส่วนนี้:
ภาคผนวกที่กำลังขยายตัวจะเป็นรูปแบบเล็ก ๆ ซึ่งฉันทำซ้ำแนวคิดของโปรแกรมที่คิดค้นขึ้นเมื่อนานมาแล้ว: ในแบบฟอร์มจะมีอาหาร "" เมื่อพยายามชี้เบราว์เซอร์ไปที่ปุ่ม " เจ๋ง!คุณจะติ๊กที่เรา ปุ่มกด " สวัสดีคุณจะไม่ถูกห้อมล้อมไปด้วยสิ่งใด
การสร้างโปรแกรมนี้เราสามารถดูหลักการสำคัญของการสร้างอาหารเสริมทั้งหมดได้ ค#, และนำทางวิธีการดำเนินการด้วยความช่วยเหลือของพวกเขา ไม่ว่าจะเป็นเป้าหมายเฉพาะถิ่น: ในเวลา - tse ตลกติ๊กตลอดเวลา
สร้างโครงการใหม่ ติดตั้งโปรแกรมเป็นเทมเพลต แบบฟอร์ม Windowsดังแสดงในข้อ 1:
1. การสร้างโครงการใหม่
ตั้งชื่อโครงการ RandWindowและกดปุ่ม ตกลง.
ทำงาน vikno MS Visual Studioเพื่อล้างแค้นการเริ่มต้นของการสูญเสียเพิ่มเติม (รูปที่ 2)
2. หน้าต่างเพิ่มเติม
บนตัวเลขจำนวนเล็กน้อยจะมีเครื่องหมาย:
- วิกโน กล่องเครื่องมือ(แผงองค์ประกอบการควบคุม) - องค์ประกอบการควบคุมที่คุณสามารถวางบนแบบฟอร์มที่กำลังสร้าง
- วิกโน ตัวสำรวจโซลูชัน(การตัดสินใจของ Oglyadach) - ที่นี่คุณสามารถทำปม: คุณสมบัติ- การปรับโครงการ ลิงค์(Possilannya) - เชื่อมต่อกับโครงการห้องสมุดรวมถึงการสร้างและเชื่อมต่อกับโครงการไฟล์ของรหัสภายนอก (พร้อมนามสกุล) .cs) และเชื่อมต่อกับร่างแบบฟอร์ม (เช่น แบบฟอร์ม1).
- วิกโน มุมมองชั้นเรียน(คลาสVіkno) – คุณสามารถดูการสร้างสรรค์ทั้งหมดของคลาสโปรแกรมได้ที่นี่
- วิกโน คุณสมบัติ(ความแรง) - เมื่อเลือกว่าจะมีองค์ประกอบของการแกะสลักหรือสร้างแบบฟอร์ม คุณจะสามารถคำนวณพารามิเตอร์ทั้งหมดของวัตถุนี้ รวมทั้งเปลี่ยนค่าที่ตั้งไว้สำหรับการล็อค
การสร้างโปรแกรม windows จะดำเนินการจนกว่าจะมีการสร้างหน้าต่างโต้ตอบที่จำเป็นทั้งหมดรวมถึงการจัดวางองค์ประกอบที่จำเป็น นาดาลี มิ นาลัชโตวูเอโม โพเดีย, ทำให้พวกเขา coristuvachemที่ด้านเทคนิค nalashtovuemo ของโปรแกรมหุ่นยนต์ ในความคิดของเรา เราได้วางองค์ประกอบการควบคุมที่จำเป็นทั้งหมดไว้บนแบบฟอร์มหลัก หลังจากนั้นเราเพิ่มส่วนควบคุมสำหรับการเลื่อนเมาส์และส่วนควบคุมสำหรับการกดปุ่ม
การเพิ่มองค์ประกอบใหม่ให้กับแบบฟอร์ม
หลังจากนั้นก็ใส่ชื่อโครงการ แทรก template ที่ต้องการแล้วกดปุ่ม ตกลง, MS Visual Studioสร้างเฟรมของโปรแกรมหน้าต่างโดยอัตโนมัติ หลังจากนั้นเราสามารถเพิ่มองค์ประกอบหน้าต่างใหม่ได้ซึ่งจำเป็นต้องลากองค์ประกอบหน้าต่างที่จำเป็นจากหน้าต่างเครื่องมือ ( กล่องเครื่องมือ).
viknu ของเราต้องการ 2 องค์ประกอบของช่องป้อนข้อมูลซึ่งจะแสดงพิกัดของการป้อนข้อมูลของเมาส์ซึ่งจะทำให้เราเข้าใจการทำงานของโปรแกรมได้ง่ายขึ้น
ที่กึ่งกลางของหน้าต่างจะถูกเขียนซึ่งเราสร้างขึ้นเพื่อความช่วยเหลือขององค์ประกอบ ฉลาก.
ด้านล่างจะเย็บ 2
ปุ่ม
Trochs ยืดชิ้นงานของ vikna หากกดอันใหม่ด้วยปุ่มขวา คุณจะเห็น เมนูบริบท. มีอันใหม่ให้กดตรงจุดอำนาจ ถ้าคุณสามารถเปลี่ยนพารามิเตอร์ของหน้าต่างได้ คุณก็เปลี่ยนได้ สำหรับ 3 ภาพเล็ก ๆ น้อย ๆ อำนาจที่จำเป็นที่สุด (ตามกฎ):
รูปที่ 3 ระดับพลังงานต่างๆ ของหน้าต่าง (แบบฟอร์ม) ใน C# .NET
Troch เพื่อยืดชิ้นงานของหน้าต่างและเพิ่มองค์ประกอบที่จำเป็นทั้งหมด ตัวเล็ก 4 ก็ตบที่หน้าต่าง กล่องเครื่องมือ:
ที่รัก 4. ลากและวาง Toolbox Width Elements ลงบนรูปร่างที่พับไว้
ไปหาเจ้าหน้าที่แถว Label1เปลี่ยนข้อความเป็น " คุณจะทำงานเพื่อสร้างแสงสว่างที่ดีที่สุดหรือไม่?". เปลี่ยนประเภทฟอนต์ด้วย ซึ่งคุณรู้สิทธิ์ แบบอักษร(รูปที่ 5).
5. แบบอักษรอำนาจหน้าที่ขององค์ประกอบฉลาก
หลังจากที่ตั้งค่าประเภทแบบอักษร ทาโฮมา, ความกว้างของตัวอักษร ตัวหนาและ rozmir เท่ากับ 16
(รูปที่ 6)
รูปที่ 6 การปรับแบบอักษร
อนุญาตให้เปลี่ยนข้อความบนปุ่ม พลังผู้พิชิต ข้อความ.
โปรแกรม vykna ชิ้นงานของ Otriman มีลักษณะดังนี้ (รูปที่ 7)
รูปที่ 7 รูปร่างหน้าตาประมาณนี้
ส่วนทางเทคนิคของโปรแกรมหุ่นยนต์
- บนหลังมือของฉัน dodamo ตัวอย่างการเคลื่อนไหวของเมาส์และมุมมองที่เป็นจริงของพิกัด xі yการสร้างสรรค์สองครั้งของช่องใส่ข้อมูล
- มาสร้างฟังก์ชั่นการกระทบกันที่ปุ่มสกินของเมาส์ (โดยเฉพาะสายรัดของคอริสทูวาค คุณยังสามารถใช้ปุ่มนี้ได้” เจ๋ง!»).
- ให้รหัสที่ทำให้หน้าต่างเคลื่อนที่ไปในทิศทางที่ถูกต้อง เพื่อให้เคอร์เซอร์เข้าใกล้ปุ่ม « เจ๋ง!».
การเคลื่อนไหวที่สำคัญของเมาส์ตามรูปแบบ
คลิกตามอำเภอใจในส่วนของรูปแบบของโปรแกรมที่ถูกสร้างขึ้น ( ไม่อย่างใดอย่างหนึ่ง)ตอนนี้ไปที่พลังของแบบฟอร์มเพื่อขอความช่วยเหลือในการคลิกปุ่มขวาของเมาส์ -> เมนูบริบท อำนาจ.
ตอนนี้จำเป็นต้องไปที่รายการของ podias ที่เป็นไปได้ yakіสามารถชนะได้อย่างมีชัย สำหรับผู้ที่คลิกที่ปุ่ม " เหตุการณ์"(Podії) ดังแสดงใน 8 เล็กน้อย:
8. ย้ายไปยังรายการของรายการที่เป็นไปได้
หาก koristuvach ย้ายเมาส์ไปที่หน้าต่าง ระบบปฏิบัติการส่งความช่วยเหลือไปยังโปรแกรมด้วยพิกัดปัจจุบันของตัวบ่งชี้ เหม็นและต้องการเรา
หากต้องการจดจำ obrobnik tsієїpodіїให้รู้จักแถว MouseMove(เล็ก 9) หลังจากที่เสียงดังในสนามเป็นมือขวาก็จะให้สำเนามือของเมาส์โดยอัตโนมัติและจะได้รับฟังก์ชัน Form1_MouseMoveที่รหัสของโปรแกรมของเรา
รูปที่ 9 หลังจากการคลิกขวา MouseMove ที่ถนัดขวาจะปรากฏในแถว และการเปลี่ยนไปใช้โค้ดของฟังก์ชันคอมพิวเตอร์จะถูกสร้างขึ้นโดยอัตโนมัติ
เพิ่ม 2 แถวในฟังก์ชันนี้เพื่อให้โค้ดมีลักษณะดังนี้
/*http://website, Anvi*/ private void Form1_MouseMove(object sender, MouseEventArgs e) ( // ย้ายพิกัด X ไปที่แถวและเขียนลงในช่องใส่ textBox1.Text = e.X.ToString(); // move พิกัด Y ไปยังแถวที่เขียนไปยังฟิลด์อินพุต textBox2.Text = e.Y.ToString();
ฟังก์ชันนี้ซึ่งแปลงการเคลื่อนไหวย่อยของตัวบ่งชี้เมาส์เหนือแบบฟอร์ม กำจัด 2
พารามิเตอร์: Object wdRunner และ Instance to class MouseEventsArgsเพื่อล้างแค้นข้อมูลเกี่ยวกับพิกัดปลายทางของเป้าหมายและหน่วยงานอื่นๆ ในปัจจุบัน
textBox1і textBox2 ce ตัวอย่างของคลาส กล่องข้อความซึ่งดำเนินการโดยองค์ประกอบช่องใส่ของเรา
สมาชิกของกรณีเหล่านี้ ข้อความอนุญาตให้คุณแทรกข้อความในฟิลด์เหล่านี้
ในอันดับนี้ตอนนี้คุณต้องคอมไพล์โปรแกรม ( F5) เมื่อย้ายตัวบ่งชี้ของเมาส์ไปด้านหลังรูปแบบของหน้าต่าง เรายังคงมีพิกัดของตัวบ่งชี้ (อยู่ตรงกลางของแบบฟอร์ม) ซึ่งเปลี่ยนแปลงโดยไม่หยุดชะงัก
ทีนี้มาดูการเตรียมแบบฟอร์มของเรากัน สำหรับผู้ที่คลิกที่บุ๊คมาร์คพิเศษ (Form1.cs [ตัวสร้าง])ดังแสดงในตัวเล็ก 10:
10. ข้ามไปที่ตัวสร้างแบบฟอร์ม C #
สร้างรถไฟใต้ดินคลิกที่ปุ่มแรก: สตูดิโอภาพเพิ่มรหัสสำหรับการประมวลผลของปุ่มโดยอัตโนมัติเมื่อกด
เพิ่มแถวถัดไปในรหัส:
/*http://website, Anvi*/ private void button1_Click(object sender, EventArgs e) ( // แสดงข้อความที่มีข้อความ "You're in" MessageBox.Show("You're in!!"); // ยุติแอปพลิเคชัน exit(); )
ตอนนี้ฉันจะกลับไปที่ตัวสร้างและให้ปุ่มเพื่อนด้วยสำหรับความช่วยเหลือในการคลิกแบบลอยบนมัน
/*http://website, Anvi*/ private void button2_Click(object sender, EventArgs e) ( // Enter an alert, with the text "We didn't forget your buy" // พารามิเตอร์อื่นคือคำอธิบายของการแจ้งเตือน ข้อความ "Uvaga" // MessageBoxButtons.OK - ประเภทของปุ่มบนแบบฟอร์มการแจ้งเตือน // MessageBoxIcon.Information - ประเภทของการแจ้งเตือน - มาติมาไอคอน "ข้อมูล" และเสียง MessageBox.Show("เราไม่ลังเลใจเกี่ยวกับเรื่องสำคัญของคุณ ขอ ","Uvaga", MessageBoxButtons.OK, MessageBoxIcon ข้อมูล);
mi trochs ได้ลดความซับซ้อนของโค้ดสำหรับการตรวจสอบรายสัปดาห์ เช่นเดียวกับ bachite เพื่อสาธิตวิธีการทำงาน รายงานเพิ่มเติม พารามิเตอร์หนวดที่ส่งผ่านไปยังฟังก์ชัน แสดงแสดงความคิดเห็นที่รหัสเอาต์พุต
ตอนนี้เราไม่รู้การเคลื่อนไหวของหน้าต่างในขณะที่เมาส์เข้าใกล้ปุ่มอีกต่อไป เจ๋ง».
ซึ่ง mi dodamo รหัสสำหรับฟังก์ชัน:
โมฆะส่วนตัวForm1_MouseMove (ผู้ส่งวัตถุ MouseEventArgs)
หลักการนั้นง่ายกว่า: โดยคำนึงถึงพิกัดของมือของเมาส์ เราจะเปลี่ยนมัน เพื่อไม่ให้มีกลิ่นเหม็นที่จัตุรัสซึ่งตั้งชื่อปุ่มของเราด้วยระยะขอบเล็กน้อย หากเป็นเช่นนั้น เราจะสร้างทศนิยม 2 ตำแหน่ง ซึ่งจะเป็นชัยชนะในการย้ายหน้าต่าง
เราสามารถแจ้งให้คุณทราบเกี่ยวกับการชี้เมาส์ไปที่ปุ่ม แต่จะมาพร้อมกับการเบลอที่ระลึกที่ลิงก์ซึ่งกดปุ่ม coristuvach โดยไม่มีแรงกดดันพิเศษเพื่อให้เราวางเคอร์เซอร์ในโซนใกล้กับ ปุ่ม.
ดังนั้นเราต้องเปล่งเสียง deshcho " คนงาน"Smіnnih, yakіเราจะให้ชัยชนะ
การสร้างตัวเลขตรง
ระดับ สุ่มใน ค#єเครื่องกำเนิดหมายเลข pseudovipad - tobto คลาสนี้มีความโดดเด่นสำหรับประเภทของลำดับของตัวเลข ซึ่งสอดคล้องกับเกณฑ์ทางสถิติของ vipadkovnostiสุ่ม rnd = สุ่มใหม่ ();
ที่นี่เราเปล่งตัวอย่างของชั้นเรียน สุ่ม (rnd) เพื่อขอความช่วยเหลือจากหมายเลขvipadkovіดังกล่าว Nadalіเราจะเอาชนะรหัสใจ rnd.ถัดไป(generation_range) หรือ rnd.ถัดไป(จากการ -1 ) เพื่อสร้าง เลขวิพาดิค.
ดังนั้นเราจะพูดถึงการเปลี่ยนแปลงอีกเล็กน้อย บางส่วนจะเริ่มต้นทันที
Windows.Forms.SystemInformation.PrimaryMonitorSize.Width; int _h = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
tmp_location goloshuetsya ที่ schob ในอนาคต timchasovo บันทึกค่ายของ vikna
ดังนั้นเราควรนึกถึงผู้ที่ในกรณีของการเลื่อนแนวตั้ง หน้าต่างของเราสามารถไปไกลกว่าขอบของหน้าจอ
shob กำหนดหน้าจอให้กับ C# .NET , เราจะ vikoristovuvaty:
/*http://site, Anvi*/ System.Windows.Forms.SystemInformation.PrimaryMonitorSize_ชมі _wดูแล koristuvach หน้าจอของคุณเองเนื่องจากถูกเรียกเก็บเงินสำหรับการเริ่มต้น
ตอนนี้โค้ดสำหรับฟังก์ชันนี้มีลักษณะดังนี้:
/*http://esate.ru, Anvi*/ โมฆะส่วนตัว Form1_MouseMove(ผู้ส่งวัตถุ, MouseEventArgs e) ( // แปลพิกัด X ในแถวและเขียนลงในช่องป้อนข้อมูล textBox1.Text = e.X.ToString(); / / แปลพิกัด Y ในแถวและเขียนลงในช่องป้อนข้อมูล textBox2.Text = e.Y.ToString(); // ดังนั้นพิกัดตามแกน X และตามแนวแกน Y จะอยู่ในสี่เหลี่ยมจัตุรัส ถ้า ซึ่งมีป้ายกำกับถัดจาก " อย่างน่าอัศจรรย์" ปุ่ม (e.X > 80 && e.X 100 && e.Y (_w - this.Width/2) ||tmp_location.Y(_h - this.Height/2)) บน this.Location = tmp_location;) ที่สร้างขึ้นใหม่ )
Axis, vlasne และนั่นแหล่ะ หลังจากเสร็จสิ้นโปรแกรมคุณสามารถลองคลิกที่ปุ่ม "น่าทึ่งมาก" Tse จะมีความสำคัญมากขึ้น
ปรับปรุงล่าสุด: 31.10.2015
สำหรับการสร้างอินเทอร์เฟซแบบกราฟิกสำหรับแพลตฟอร์ม .NET เพิ่มเติม มีการปรับใช้เทคโนโลยีต่างๆ - Window Forms, WPF, ส่วนเสริมสำหรับ Windows Store (สำหรับ Windows 8/8.1/10) อย่างไรก็ตาม แพลตฟอร์มเอกสารที่ง่ายและสะดวกที่สุดคือ Window Forms หรือ Forms ความช่วยเหลือของเดนมาร์กเป็นข้อมูลเมตาของการทำความเข้าใจหลักการของการสร้างส่วนต่อประสานกราฟิกสำหรับเทคโนโลยี WinForms เพิ่มเติมและการทำงานขององค์ประกอบหลักของการจัดการ
สร้างโดยซอฟต์แวร์กราฟิก
ในการสร้างโครงการกราฟิก เราจำเป็นต้องมีสภาพแวดล้อมการพัฒนา Visual Studio เนื่องจากเวอร์ชันของ Visual Studio 2013 เป็นเวอร์ชันที่ขยายได้มากที่สุด ดังนั้นผู้ที่ฉันช่วย ฉันจะเอาชนะเวอร์ชันฟรีของสื่อนี้ Visual Studio Community 2013สามารถหา Yaku ได้ที่ด้านข้าง https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
หลังจากติดตั้งมิดเดิลแวร์และส่วนประกอบทั้งหมดแล้ว ให้เปิด Visual Studio และสร้างโปรเจ็กต์โปรแกรมกราฟิก ซึ่งในเมนู ให้เลือกรายการไฟล์ (ไฟล์) และในเมนูย่อย ให้เลือกใหม่ -> โครงการ (สร้าง -> โครงการ) สิ่งสุดท้ายที่เราเห็นต่อหน้าเราคือหน้าต่างโต้ตอบของการสร้างโครงการใหม่:
ในคอลัมน์ด้านซ้ายเลือก Windows Desktop และในส่วนกลางของประเภทโปรเจ็กต์กลาง - type แอปพลิเคชันแบบฟอร์ม Windowsและสำหรับผู้หญิงฉันเหมือนอยู่ในทุ่งด้านล่าง ตัวอย่างเช่น เราเรียกโยคะ สวัสดีแอพ. สิ่งต่อไปกดตกลง
หลังจากที่ Visual Studio เปิดโปรเจ็กต์จากไฟล์ที่สร้างขึ้นหลังการล็อก:
ขอบเขตส่วนใหญ่ของ Visual Studio ถูกครอบครองโดยนักออกแบบกราฟิก ซึ่งสามารถกำหนดรูปแบบโปรแกรมในอนาคตได้ ขณะนี้ว่างเปล่าและไม่มีอะไรมากไปกว่าส่วนหัวของ Form1 ทางด้านขวา คุณจะพบไฟล์โซลูชัน/โครงการ - Solution Explorer คุณจะพบไฟล์ทั้งหมดที่เกี่ยวข้องกับภาคผนวกของเรา รวมถึงไฟล์ในแบบฟอร์ม แบบฟอร์ม1.cs.
ที่ด้านล่าง คนถนัดขวาเรียกว่าหน้าต่างอำนาจ - คุณสมบัติ เนื่องจากในขณะนี้ ฉันได้เลือกแบบฟอร์มเป็นองค์ประกอบของการควบคุม จากนั้นเจ้าหน้าที่จะปรากฏในฟิลด์ใด โดยเชื่อมโยงกับแบบฟอร์ม
ตอนนี้เรารู้ถึงพลังของรูปแบบ Text และเปลี่ยนความหมายของมันเป็นจามรี:
ด้วยวิธีนี้ เราเปลี่ยนชื่อของแบบฟอร์ม ตอนนี้สามารถโอนย้ายไปยังฟิลด์ได้เป็นองค์ประกอบหลัก ตัวอย่างเช่น ปุ่ม เรารู้จักส่วนซ้ายของแท็บ Visual Studio เพื่อใคร กล่องเครื่องมือ. คลิกที่แท็บนี้แล้วเราจะเห็นแผงที่มีองค์ประกอบ เราสามารถโอนดาวไปยังแบบฟอร์มสำหรับองค์ประกอบอื่น ๆ ได้:
เรารู้องค์ประกอบตรงกลางของปุ่ม i เมื่อโหลด їїใน kazіvnik ของเมาส์ เราโอนไปยังแบบฟอร์ม:
Tse เป็นส่วนที่มองเห็นได้ ทีนี้มาดูการเขียนโปรแกรมกัน ให้ฉันเพิ่มรหัสที่ง่ายที่สุดของ C # ของฉันซึ่งเป็นปุ่มเปิดใช้งานและกดปุ่ม สำหรับใครก็ตามที่ฉันมีความผิดให้ไปที่ไฟล์รหัสซึ่งเป็นการเชื่อมต่อจากแบบฟอร์มนี้ เนื่องจากเราไม่มีไฟล์โค้ดให้ดู เราจึงสามารถคลิกบนแบบฟอร์มโดยใช้ปุ่มเมาส์ขวาและในเมนูดูโค้ด (ดูไฟล์โค้ด):
อย่างไรก็ตาม เราจะเร่งความเร็วในวิธีที่ต่างออกไป เพื่อไม่ให้เขียนโค้ดมากเกินไป เลื่อนตัวชี้เมาส์ไปที่ปุ่มและคลิกที่การคลิกด้านล่าง เราใช้ไฟล์โค้ดโดยอัตโนมัติ แบบฟอร์ม1.csซึ่งมีลักษณะดังนี้:
การใช้ระบบ ผู้ชนะ System.Collections.Generic; ใช้ System.ComponentModel; ใช้ System.Data; ระบบผู้ชนะ. การวาดภาพ; ใช้ System.Linq; ใช้ System.Text; ผู้ชนะ System.Threading.Tasks; ใช้ System.Windows.Forms; เนมสเปซ HelloApp ( คลาสบางส่วนสาธารณะ Form1: แบบฟอร์ม ( Form1 สาธารณะ () ( InitializeComponent (); ) โมฆะส่วนตัว button1_Click (ผู้ส่งวัตถุ, EventArgs e) ( ) )
Dodamo แสดงการแจ้งเตือนหลังจากกดปุ่ม โดยเปลี่ยนรหัสด้วยวิธีต่อไปนี้:
การใช้ระบบ ผู้ชนะ System.Collections.Generic; ใช้ System.ComponentModel; ใช้ System.Data; ระบบผู้ชนะ. การวาดภาพ; ใช้ System.Linq; ใช้ System.Text; ผู้ชนะ System.Threading.Tasks; ใช้ System.Windows.Forms; เนมสเปซ HelloApp ( คลาสบางส่วนสาธารณะ Form1: แบบฟอร์ม ( สาธารณะ Form1() ( InitializeComponent(); ) โมฆะส่วนตัว button1_Click(ผู้ส่งวัตถุ, EventArgs e) ( MessageBox.Show("สวัสดี"); ) ) )
เปิดตัวโปรแกรม
ในการรันโปรแกรมในโหมดบูต ให้กดแป้น F5 หรือลูกศรสีเขียวบนแผง Visual Studio ครั้งต่อไปที่แบบฟอร์มของเราเริ่มต้นด้วยปุ่มเอง และหากเรากดปุ่มบนแบบฟอร์ม จะแสดงข้อความเตือนเกี่ยวกับการสูบไอ
หลังจากเปิดตัวโปรแกรม สตูดิโอจะรวบรวมโยคะจากไฟล์จากนามสกุล exe คุณสามารถค้นหาไฟล์ได้โดยไปที่โฟลเดอร์โปรเจ็กต์และไปที่ไดเร็กทอรี bin/Debug หรือ bin/Release
เมื่อพิจารณาสั้น ๆ เกี่ยวกับการสร้างส่วนเสริมกราฟิกสำหรับโครงการ เราสามารถไปยังภาพรวมขององค์ประกอบหลักและแน่นอนแบบฟอร์ม