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

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

11
BackgroundWorker vs กระทู้พื้นหลัง
ฉันมีคำถามเกี่ยวกับโวหารเกี่ยวกับการเลือกการใช้เธรดพื้นหลังที่ฉันควรใช้กับแอพพลิเคชั่น windows form ปัจจุบันฉันมีBackgroundWorkerรูปแบบที่มีการ(while(true))วนซ้ำไม่สิ้นสุด ในวงนี้ฉันใช้WaitHandle.WaitAnyเพื่อเก็บกระทู้งีบหลับจนกว่าสิ่งที่น่าสนใจเกิดขึ้น เหตุการณ์หนึ่งที่ฉันจัดการรอเป็นStopThreadเหตุการณ์ "" เพื่อให้ฉันสามารถแยกวง Form.Dispose()เหตุการณ์นี้จะส่งสัญญาณเมื่อจากแทนที่ของฉัน ฉันอ่านที่ไหนสักแห่งที่BackgroundWorkerมีไว้สำหรับการดำเนินการที่คุณไม่ต้องการผูก UI ด้วยและมีจุดสิ้นสุดที่ จำกัด - เช่นการดาวน์โหลดไฟล์หรือประมวลผลรายการตามลำดับ ในกรณีนี้ "สิ้นสุด" ไม่เป็นที่รู้จักและเฉพาะเมื่อปิดหน้าต่าง ดังนั้นฉันควรจะใช้เธรดพื้นหลังแทนการBackgroundWorkerใช้เพื่อวัตถุประสงค์นี้หรือไม่

10
รูปแบบการออกแบบ UI สำหรับแบบฟอร์ม Windows (เช่น MVVM สำหรับ WPF)
MVVM มักใช้กับ WPF เพราะมันเหมาะที่สุดสำหรับมัน แต่ Windows Forms เป็นอย่างไรบ้าง มีรูปแบบวิธีการ / ออกแบบที่เป็นที่ยอมรับและใช้กันทั่วไปเช่นนี้สำหรับ Windows Forms หรือไม่ รูปแบบที่ใช้งานได้ดีกับ Windows Forms หรือไม่ มีหนังสือหรือบทความที่อธิบายสิ่งนี้ได้ดีหรือไม่? อาจจะเป็น MVP หรือ MVC?


4
วิธีการปิดการใช้งานการแก้ไของค์ประกอบใน combobox สำหรับ c #?
ฉันมีองค์ประกอบบางอย่างใน ComboBox (WinForms กับ C #) ฉันต้องการให้เนื้อหาของพวกเขาเป็นแบบคงที่เพื่อให้ผู้ใช้ไม่สามารถเปลี่ยนค่าภายในเมื่อเรียกใช้แอปพลิเคชัน ฉันไม่ต้องการให้ผู้ใช้เพิ่มค่าใหม่ให้กับ ComboBox
157 c#  winforms  combobox 

16
วิธีการวางโฟกัสในกล่องข้อความเมื่อโหลดแบบฟอร์ม?
ฉันมีในกล่องข้อความโปรแกรม C # ฉันต้องการมันเมื่อโปรแกรมเริ่มทำงานโฟกัสจะอยู่บนกล่องข้อความ ฉันลองสิ่งนี้ใน Form_Load: MyTextBox.Focus(); แต่มันจะไม่ทำงาน
156 c#  winforms 

9
Panel.Dock กรอกข้อมูลโดยไม่สนใจการตั้งค่า Panel.Dock อื่น ๆ
ถ้าคุณสร้างพาเนลบนแบบฟอร์มและตั้งค่าเป็น Dock = Top แล้วปล่อยพาเนลอื่นแล้วตั้งค่า Dock = Fill มันอาจเติมทั้งฟอร์มโดยไม่สนใจพาเนลแรก การเปลี่ยนลำดับแท็บไม่ทำอะไรเลย

6
ฉันจะเพิ่ม ToolTip ให้กับตัวควบคุมได้อย่างไร
ฉันมีตัวควบคุมบางอย่างที่ฉันต้องการให้แสดงToolTipเมื่อเมาส์อยู่เหนือเมาส์ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันต้องการทราบวิธีการทำอย่างถูกต้องในรหัส แต่ยังอยู่ในนักออกแบบ (มีToolTipส่วนประกอบในกล่องเครื่องมือ แต่ฉันไม่ได้ค่อนข้าง .. รับมัน) ฉันจะไม่แปลกใจถ้านี่เป็นสิ่งที่ซ้ำกัน แต่ฉันสามารถค้นหาคำถามที่อยู่ในสถานการณ์ขั้นสูงและเฉพาะเจาะจงมากขึ้นเท่านั้น ฉันต้องการทราบพื้นฐาน
154 c#  winforms  tooltip 

30
การทำให้กล่องข้อความ WinForms ทำงานเหมือนแถบที่อยู่ของเบราว์เซอร์ของคุณ
เมื่อกล่องข้อความ C # WinForms ได้รับการโฟกัสฉันต้องการให้มันทำงานเหมือนแถบที่อยู่ของเบราว์เซอร์ของคุณ หากต้องการดูว่าฉันหมายถึงอะไรให้คลิกในแถบที่อยู่ของเว็บเบราว์เซอร์ของคุณ คุณจะสังเกตเห็นพฤติกรรมดังต่อไปนี้: การคลิกในกล่องข้อความควรเลือกข้อความทั้งหมดหากไม่ได้เน้นข้อความไว้ก่อนหน้านี้ เลื่อนเมาส์ลงและลากในกล่องข้อความควรเลือกเฉพาะข้อความที่ฉันเน้นด้วยเมาส์ หากกล่องข้อความนั้นโฟกัสอยู่แล้วการคลิกจะไม่เลือกข้อความทั้งหมด การโฟกัสกล่องข้อความโดยทางโปรแกรมหรือผ่านแท็บคีย์บอร์ดควรเลือกข้อความทั้งหมด ฉันต้องการทำสิ่งนี้ใน WinForms ALUN GUN ALERT: โปรดอ่านข้อความต่อไปนี้ก่อนตอบ! ขอบคุณเพื่อน. :-) การเรียก. SelectAll () ระหว่างเหตุการณ์. ใส่หรือ .GotFocus จะไม่ทำงานเพราะหากผู้ใช้คลิกที่กล่องข้อความเครื่องหมายรูปหมวกจะถูกวางไว้ในตำแหน่งที่เขาคลิกดังนั้นจึงยกเลิกการเลือกข้อความทั้งหมด การโทร. SelectAll () ระหว่างกิจกรรม .Click จะไม่ทำงานเนื่องจากผู้ใช้จะไม่สามารถเลือกข้อความใด ๆ ด้วยเมาส์ การเรียกใช้. SelectAll () จะแทนที่การเลือกข้อความของผู้ใช้ การเรียกกล่องข้อความ BeginInvoke (Action) SelectAll) ที่โฟกัส / เข้าสู่การป้อนเหตุการณ์ไม่ทำงานเพราะมันทำลายกฎ # 2 ด้านบนมันจะยกเลิกการเลือกของผู้ใช้ในการโฟกัส

7
วิธีซ่อนเฉพาะปุ่มปิด (x)
ฉันมีกล่องโต้ตอบโมดอลและจำเป็นต้องซ่อนปุ่มปิด (X) แต่ฉันไม่สามารถใช้งานได้ ControlBox = falseเพราะฉันต้องใช้ปุ่มย่อขนาดเล็กสุดและขยายใหญ่สุด ฉันต้องการซ่อนเพียงปุ่มปิดมีวิธีการทำเช่นนั้นหรือไม่? ขอบคุณมาก! อัปเดต: ฉันได้รับอนุญาตให้ปิดการใช้งานซึ่งง่ายกว่า :) ขอบคุณทุกคน!
151 c#  winforms 

18
วิธีการเปลี่ยนสีแถวใน datagridview?
ฉันต้องการเปลี่ยนสีของแถวใดแถวหนึ่งใน DataGridview ของฉัน แถวควรเปลี่ยนเป็นสีแดงเมื่อค่าของ columncell 7 น้อยกว่าค่าใน columncell 10 คำแนะนำใด ๆ เกี่ยวกับวิธีการทำสิ่งนี้ให้สำเร็จ?

7
DateTimePicker: เลือกทั้งวันที่และเวลา
เป็นไปได้ไหมที่จะใช้ DateTimePicker (Winforms) เพื่อเลือกวันที่และเวลา (ในดรอปดาวน์) คุณจะเปลี่ยนการแสดงผลที่กำหนดเองของค่าที่เลือกได้อย่างไร นอกจากนี้ยังเป็นไปได้ไหมที่จะทำให้ผู้ใช้สามารถพิมพ์วันที่ / เวลาด้วยตนเองได้?
143 c#  .net  winforms 

7
วิธีเขียนรหัส WinForms ที่ปรับขนาดเป็นแบบอักษรของระบบและการตั้งค่า dpi โดยอัตโนมัติ
อินโทร:มีความคิดเห็นมากมายที่บอกว่า "WinForms ไม่ได้ปรับสเกลให้เป็น DPI / การตั้งค่าแบบอักษรได้อย่างอัตโนมัติ แต่เปลี่ยนเป็น WPF" อย่างไรก็ตามฉันคิดว่าเป็นไปตาม. NET 1.1 ดูเหมือนว่าพวกเขาใช้งานการปรับขนาดอัตโนมัติใน. NET 2.0 อย่างน้อยก็มาจากการวิจัยและการทดสอบของเรา อย่างไรก็ตามหากคุณบางคนในที่นี้รู้ดีกว่านี้เรายินดีรับฟังจากคุณ (โปรดอย่ากังวลกับการโต้เถียงเราควรเปลี่ยนเป็น WPF ... นั่นไม่ใช่ตัวเลือกในขณะนี้) คำถาม: อะไรใน WinForms ไม่ปรับขนาดอัตโนมัติอย่างถูกต้องดังนั้นควรหลีกเลี่ยง แนวทางการออกแบบอะไรที่โปรแกรมเมอร์ควรปฏิบัติตามเมื่อเขียนโค้ด WinForms ซึ่งจะทำให้การปรับสเกลอัตโนมัติดีขึ้นหรือไม่ แนวทางการออกแบบที่เราได้ระบุไว้: ดูคำตอบวิกิของชุมชนด้านล่าง มีสิ่งใดที่ไม่ถูกต้องหรือไม่เพียงพอหรือไม่? แนวทางอื่น ๆ ที่เราควรนำมาใช้? มีรูปแบบอื่น ๆ ที่จำเป็นต้องหลีกเลี่ยงหรือไม่? คำแนะนำอื่น ๆ เกี่ยวกับเรื่องนี้จะได้รับการชื่นชมอย่างมาก
143 c#  .net  winforms  fonts  dpi 

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

7
การแปลงอาเรย์แบบแปรผันร่วมจาก x เป็น y อาจทำให้เกิดข้อยกเว้นขณะทำงาน
ฉันมีprivate readonlyรายการLinkLabels ( IList<LinkLabel>) ในภายหลังฉันเพิ่มLinkLabels ในรายการนี้และเพิ่มป้ายกำกับเหล่านั้นลงในรายการFlowLayoutPanelต่อไปนี้: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); แสดงให้เห็นว่า Resharper Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception on write operationฉันเตือน: โปรดช่วยฉันคิดออก: สิ่งนี้หมายความว่าอย่างไร นี่คือการควบคุมผู้ใช้และจะไม่สามารถเข้าถึงได้โดยวัตถุหลายรายการเพื่อตั้งค่าป้ายกำกับดังนั้นการเก็บรักษารหัสไว้จะไม่ส่งผลกระทบต่อมัน

17
แสดงแบบฟอร์มโดยไม่ขโมยโฟกัสหรือไม่
ฉันใช้แบบฟอร์มเพื่อแสดงการแจ้งเตือน (ปรากฏที่ด้านล่างขวาของหน้าจอ) แต่เมื่อฉันแสดงแบบฟอร์มนี้จะเป็นการขโมยโฟกัสจากแบบฟอร์มหลัก มีวิธีแสดงแบบฟอร์ม "แจ้งเตือน" นี้โดยไม่ขโมยโฟกัสหรือไม่
140 c#  .net  winforms 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.