คำถามติดแท็ก winforms

WinForms เป็นชื่อที่ไม่เป็นทางการซึ่งกำหนดให้กับ Windows Forms ซึ่งเป็นไลบรารีคลาส GUI ใน Microsoft .NET Framework และ Mono คำถามในแท็กนี้ควรติดแท็กด้วยเฟรมเวิร์กเป้าหมาย ([.net] หรือ [mono]) และควรติดแท็กปกติด้วยแท็กภาษาการเขียนโปรแกรม

2
App.config: ขอบเขตผู้ใช้เทียบกับแอปพลิเคชัน
ฉันได้เพิ่มไฟล์ App.config ในโปรเจ็กต์ของฉันแล้ว ฉันได้สร้างการตั้งค่าสองอย่างจากโครงการ> คุณสมบัติ> แผงการตั้งค่า - ฉันได้สังเกตเห็นว่าเมื่อผมเพิ่มการตั้งค่าให้ฉันสามารถกำหนดขอบเขตเป็นหรือUser Application- ผู้ใช้ ใบสมัคร ถ้าฉันกำหนดการตั้งค่าเมื่อUserไปที่userSettingsส่วน ถ้าฉันกำหนดการตั้งค่าตามที่Applicationไปที่applicationSettingsส่วน App.config <configuration> <userSettings> <DemoApp.Properties.Settings> <setting name="MySetting1" serializeAs="String"> <value>Value1</value> </setting> </DemoApp.Properties.Settings> </userSettings> <applicationSettings> <DemoApp.Properties.Settings> <setting name="MySetting2" serializeAs="String"> <value>Value2</value> </setting> </DemoApp.Properties.Settings> </applicationSettings> </configuration> แต่การตั้งค่าเหล่านี้สามารถเข้าถึงได้ด้วยวิธีเดียวกันจาก.cs- รหัส string mySetting1 = DemoApp.Properties.Settings.Default.MySetting1; string mySetting2 = DemoApp.Properties.Settings.Default.MySetting2; อะไรคือความแตกต่างระหว่างUserและApplicationขอบเขตและภายใต้สถานการณ์ใดที่เราควรเลือกระหว่างสองสิ่งนี้?

3
Model-View-Presenter ใน WinForms
ฉันพยายามใช้วิธี MVP เป็นครั้งแรกโดยใช้ WinForms ฉันพยายามเข้าใจการทำงานของแต่ละเลเยอร์ ในโปรแกรมของฉันฉันมีปุ่ม GUI ที่เมื่อคลิกแล้วจะเปิดหน้าต่าง openfiledialog ดังนั้นการใช้ MVP GUI จะจัดการกับเหตุการณ์การคลิกปุ่มแล้วเรียก Presenter.openfile (); ภายใน Presenter.openfile () ควรมอบหมายการเปิดไฟล์นั้นให้กับเลเยอร์โมเดลหรือเนื่องจากไม่มีข้อมูลหรือตรรกะในการประมวลผลควรดำเนินการตามคำขอและเปิดหน้าต่าง openfiledialog หรือไม่ อัปเดต: ฉันได้ตัดสินใจที่จะเสนอเงินรางวัลเนื่องจากฉันรู้สึกว่าต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับเรื่องนี้และควรปรับให้เหมาะกับประเด็นเฉพาะของฉันด้านล่างเพื่อให้ฉันมีบริบท เอาล่ะหลังจากอ่าน MVP แล้วฉันได้ตัดสินใจที่จะใช้ Passive View อย่างมีประสิทธิภาพฉันจะมีการควบคุมมากมายบน Winform ซึ่งจะจัดการโดยผู้นำเสนอและจากนั้นงานที่มอบหมายให้กับ Model (s) ประเด็นเฉพาะของฉันอยู่ด้านล่าง: เมื่อโหลด winform จะต้องได้รับ Treeview ฉันถูกต้องหรือไม่ที่คิดว่ามุมมองควรเรียกใช้เมธอดเช่น Presenter.gettree () สิ่งนี้จะมอบสิทธิ์ให้กับโมเดลซึ่งจะได้รับข้อมูลสำหรับ Treeview สร้างและกำหนดค่ากลับไปที่ ผู้นำเสนอซึ่งจะส่งผ่านไปยังมุมมองซึ่งจะกำหนดให้เป็นแผงพูด? สิ่งนี้จะเหมือนกันสำหรับการควบคุมข้อมูลใด ๆ บน Winform เนื่องจากฉันมี …


11
วิธีที่ง่ายที่สุดในการมีไฟล์กำหนดค่าในแอปพลิเคชัน Windows Forms C #
ฉันยังใหม่กับ. NET มากและฉันก็ยังไม่เข้าใจว่าไฟล์คอนฟิกูเรชันทำงานอย่างไร ทุกครั้งที่ค้นหาใน Google ฉันได้รับผลลัพธ์เกี่ยวกับ web.config แต่ฉันกำลังเขียนแอปพลิเคชัน Windows Forms ฉันคิดว่าฉันต้องใช้เนมสเปซ System.Configuration แต่เอกสารไม่ได้ช่วยอะไร ฉันจะกำหนดได้อย่างไรว่าไฟล์คอนฟิกูเรชันของฉันคือ XYZ.xml หรือมีชื่อ "เริ่มต้น" สำหรับไฟล์กำหนดค่าหรือไม่ ฉันยังไม่เข้าใจ นอกจากนี้ฉันจะกำหนดส่วนใหม่ได้อย่างไร ฉันจำเป็นต้องสร้างคลาสที่สืบทอดมาจาก ConfigurationSection หรือไม่? ฉันต้องการเพียงแค่มีไฟล์การกำหนดค่าที่มีค่าดังนี้: <MyCustomValue>1</MyCustomValue> <MyCustomPath>C:\Some\Path\Here</MyCustomPath> มีวิธีทำง่ายๆไหม? คุณช่วยอธิบายด้วยวิธีง่ายๆในการอ่านและเขียนจาก / ไปยังไฟล์คอนฟิกูเรชันง่ายๆ

8
คุณจะวินิจฉัยข้อผิดพลาด SEHException ได้อย่างไร - ส่วนประกอบภายนอกมีข้อยกเว้น
เมื่อใดก็ตามที่ผู้ใช้รายงานข้อผิดพลาดเช่น System.Runtime.InteropServices.SEHException - องค์ประกอบภายนอกมีข้อยกเว้นหรือไม่ มีอะไรที่ฉันในฐานะโปรแกรมเมอร์สามารถทำได้เพื่อหาสาเหตุ? สถานการณ์จำลอง: ผู้ใช้รายหนึ่ง (ใช้โปรแกรมที่ บริษัท ของฉันเขียน) ได้รายงานข้อผิดพลาดนี้ นี่อาจเป็นข้อผิดพลาดหรือไม่ก็ได้ พวกเขากล่าวว่าในเดือนที่แล้วคอมพิวเตอร์ 'หยุดทำงาน' สองครั้ง ฉันได้เรียนรู้จากประสบการณ์แล้วไม่ควรใช้คำอธิบายนี้มากเกินไปเพราะโดยปกติแล้วจะหมายความว่ามีคนที่เกี่ยวข้องกับคอมพิวเตอร์ไม่ทำงานตามที่คาดไว้ พวกเขาไม่สามารถให้รายละเอียดเพิ่มเติมกับฉันได้และฉันไม่พบข้อผิดพลาดใด ๆ ที่บันทึกไว้ ดังนั้นจึงอาจเป็นข้อผิดพลาดนี้หรือไม่ก็ได้ จาก stack-trace ข้อผิดพลาดที่เกิดขึ้นจริงคือเมื่อสร้างคลาสซึ่งไม่ได้เรียกรหัสการทำงานร่วมกันโดยตรง แต่อาจมีความซับซ้อนเนื่องจากวัตถุอาจเป็นส่วนหนึ่งของรายการที่เป็นฐานข้อมูลไปยัง DevExpress Grid ข้อผิดพลาดถูก 'จับ' โดยรูทีนข้อยกเว้นที่ไม่สามารถจัดการได้ซึ่งโดยปกติจะปิดโปรแกรม แต่มีตัวเลือกในการละเว้นและดำเนินการต่อ หากพวกเขาเลือกที่จะเพิกเฉยต่อข้อผิดพลาดโปรแกรมจะทำงานต่อไป แต่เกิดข้อผิดพลาดขึ้นอีกครั้งเมื่อรูทีนนี้ถูกเรียกใช้ครั้งต่อไป อย่างไรก็ตามมันไม่เกิดขึ้นอีกหลังจากปิดและรีสตาร์ทแอปพลิเคชันของเรา คอมพิวเตอร์ที่เป็นปัญหาดูเหมือนจะไม่ได้รับการเน้นย้ำ ใช้งาน Vista Business มีหน่วยความจำ 2GB และตามที่ Task Manager ใช้เพียงครึ่งเดียวกับแอปพลิเคชันของเราเพียงประมาณ 200Mb มีข้อมูลอีกชิ้นหนึ่งที่อาจเกี่ยวข้องหรือไม่เกี่ยวข้อง ส่วนอื่นของโปรแกรมเดียวกันใช้องค์ประกอบของบุคคลที่สามซึ่งเป็น dotnet wrapper ที่มีประสิทธิภาพรอบ ๆ …

7
แบบฟอร์ม C # ปิดเทียบกับแบบฟอร์มกำจัด
ฉันเพิ่งเริ่มใช้ C # และฉันพยายามดูโพสต์ก่อนหน้านี้ แต่ไม่พบคำตอบที่ดี ใน C # Windows Form Application แบบฟอร์มเดียวใช้Form.Close()ดีกว่าหรือForm.Dispose()? MSDN กล่าวว่าทรัพยากรทั้งหมดภายในออบเจ็กต์ถูกปิดและฟอร์มจะถูกกำจัดเมื่อมีการเรียกใช้การปิด ซึ่งเป็นแรงบันดาลใจให้ฉันได้พบกับหลายตัวอย่างออนไลน์ซึ่งเป็นไปตาม Dispose แทนที่จะปิด คนหนึ่งมีข้อได้เปรียบเหนือคนอื่น ๆ หรือไม่? เราควรเลือกสถานการณ์ใดสถานการณ์หนึ่งมากกว่าอีกสถานการณ์หนึ่ง
88 c#  winforms 

13
“ ไม่สามารถอัปเดตการอ้างอิงของโครงการได้” หลังจากกระทำการโค่นล้ม
ฉันมีโครงการติดตั้งใน. NET เมื่อฉันบันทึกโครงการและโครงการอื่น ๆ เพื่อโค่นล้มโครงการตั้งค่าจะไม่รวบรวมอีกต่อไป ฉันได้รับข้อผิดพลาด "ไม่สามารถอัปเดตการอ้างอิงของโครงการ"

4
ฉันจะสร้างสิ่งที่จับข้อยกเว้น 'ที่ไม่สามารถจัดการได้' ทั้งหมดในแอปพลิเคชัน WinForms ได้อย่างไร
จนถึงตอนนี้ฉันเพิ่งวางบล็อก try / catch ไว้Application.RunในProgram.csจุดเริ่มต้นของโปรแกรม สิ่งนี้จับข้อยกเว้นทั้งหมดได้ดีพอในโหมด Debug แต่เมื่อฉันเรียกใช้โปรแกรมโดยไม่มีโหมดดีบักข้อยกเว้นจะไม่ได้รับการจัดการอีกต่อไป ฉันได้รับกล่องข้อยกเว้นที่ไม่สามารถจัดการได้ ฉันไม่ต้องการให้สิ่งนี้เกิดขึ้น ฉันต้องการให้ตรวจจับข้อยกเว้นทั้งหมดเมื่อทำงานในโหมดไม่แก้ไขข้อบกพร่อง โปรแกรมมีเธรดหลายเธรดและโดยเฉพาะอย่างยิ่งข้อยกเว้นทั้งหมดจะถูกจับโดยตัวจัดการเดียวกัน ฉันต้องการบันทึกข้อยกเว้นในฐานข้อมูล ใครมีคำแนะนำในการทำเช่นนี้หรือไม่?

9
Console.WriteLine ไม่ปรากฏในหน้าต่างผลลัพธ์
ฉันได้Console.WriteLineทำการทดสอบการโทร แต่ไม่ปรากฏในกล่องเอาต์พุต? public static ArrayList myDeliveries = new ArrayList(); public mainForm(){ InitializeComponent(); } private void mainForm_Load(object sender, EventArgs e){ if (!File.Exists("../../MealDeliveries.txt")){ MessageBox.Show("File not found!"); return; } using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){ //first line is delivery name string strDeliveryName = sr.ReadLine(); Console.WriteLine("Test content"); while (strDeliveryName != null){ //other lines Delivery …
87 c#  .net  winforms 

8
Winforms TableLayoutPanel เพิ่มแถวโดยทางโปรแกรม
ฉันต่อสู้กับสิ่งนี้มาระยะหนึ่งแล้วและพบว่ามีคนอีกจำนวนมากที่ต่อสู้กับ TableLayoutPanel (.net 2.0 Winforms) เช่นกัน ปัญหา ฉันกำลังพยายามใช้ tablelayoutpanel 'ว่าง' ซึ่งมีการกำหนด 10 คอลัมน์จากนั้นในรันไทม์เพิ่มแถวของตัวควบคุมโดยใช้โปรแกรม (เช่นหนึ่งตัวควบคุมต่อเซลล์) อาจมีคนคิดว่ามันควรจะเรียบง่ายเหมือน myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */); แต่นั่น (สำหรับฉัน) ไม่ได้เพิ่มแถว ดังนั้นอาจจะเพิ่มในลักษณะแถว myTableLayoutPanel.RowStyles.Clear(); myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F)); แต่ก็ไม่ได้ผลเช่นกัน ฉันได้ขุดคุ้ยและพบว่าการmyTableLayoutPanel.RowCountใช้งานเปลี่ยนไปจากเวลาออกแบบเป็นเวลาทำงานดังนั้นการทำจึงmyTableLayoutPanel.RowCount++;ไม่ได้เพิ่มแถวอื่นแม้แต่ก่อน / หลังเพิ่มรายการ RowStyle สำหรับมัน! ปัญหาที่เกี่ยวข้องอีกประการหนึ่งที่ฉันพบคือการควบคุมจะถูกเพิ่มลงในจอแสดงผล แต่พวกเขาทั้งหมดจะแสดงผลที่จุด 0,0 ของ TableLayoutPanel นอกจากนี้ยังไม่ได้ถูก จำกัด ให้อยู่ในขอบเขตของเซลล์ที่ควรจะเป็น แสดงอยู่ภายใน (เช่นกับ …

11
แสดงคอนโซลในแอปพลิเคชัน Windows หรือไม่
มีวิธีแสดงคอนโซลในแอปพลิเคชัน Windows หรือไม่? ฉันต้องการทำสิ่งนี้: static class Program { [STAThread] static void Main(string[] args) { bool consoleMode = Boolean.Parse(args[0]); if (consoleMode) { Console.WriteLine("consolemode started"); // ... } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } }
85 c#  winforms  console 

4
ตรวจสอบว่า ContextMenuStrip ใช้กับตัวควบคุมใด
ฉันมีสิ่งContextMenuStripที่กำหนดให้กับลิสต์บ็อกซ์ต่างๆ ฉันพยายามคิดว่าเมื่อไหร่ที่ContextMenuStripคลิกสิ่งที่ListBoxมันถูกใช้ ฉันลองใช้รหัสด้านล่างเพื่อเริ่มต้น แต่ใช้งานไม่ได้ senderมีค่าที่ถูกต้อง แต่เมื่อฉันพยายามที่จะกำหนดให้menuSubmittedมันเป็นโมฆะ private void MenuViewDetails_Click(object sender, EventArgs e) { ContextMenu menuSubmitted = sender as ContextMenu; if (menuSubmitted != null) { Control sourceControl = menuSubmitted.SourceControl; } } ความช่วยเหลือใด ๆ จะดีมาก ขอบคุณ. เมื่อใช้ความช่วยเหลือด้านล่างฉันพบว่า: private void MenuViewDetails_Click(object sender, EventArgs e) { ToolStripMenuItem menuItem = sender as ToolStripMenuItem; if (menuItem …

7
ข้อได้เปรียบของแอพ WPF เทียบกับ Winform สำหรับแอพธุรกิจ? [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดขึ้นมาใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันรู้จัก asp.net และการพัฒนา winform ฉันไม่ใช่นักพัฒนาประเภทที่กระโดดเข้าสู่เทคโนโลยีใหม่เพียงเพราะมันใหม่ ต้องให้ผลประโยชน์พิเศษแก่ฉันเช่นผลผลิตที่สูงขึ้น อะไรคือข้อดีของ WPF เหนือ Winforms สำหรับแอปธุรกิจล้วน ๆ ฉันไม่สนใจอาหารตาพิเศษภาพเคลื่อนไหวการไล่ระดับสีเอฟเฟกต์การแสดงภาพและอื่น ๆ ที่ WPF มอบให้ แอปธุรกิจมีไว้สำหรับการป้อนข้อมูลการรายงานข้อมูลและอาจมีแผนภูมิและการแสดงรูปภาพแบบคงที่ WPF จะช่วยในแอพเหล่านี้อย่างไร? การผูกข้อมูลที่ดียิ่งขึ้น? WinForm เป็นเทคโนโลยีที่ได้รับการพิสูจน์แล้วและฉันชอบที่ฉันสามารถทำทุกอย่างใน Visual Studio เทียบกับ IDE หลายตัวสำหรับ WPF (ตระกูล VS & Blend) นอกจากนี้ฉันคิดว่า WPF ไม่มีการควบคุมการผูกข้อมูลที่สมบูรณ์เหมือนกับคู่ของ Winform (DataGridView..etc) AFAIK Microsoft จะยังคงสนับสนุน Winforms …
84 wpf  winforms 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.