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

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

14
วิธีจัดการเหตุการณ์คลิกในคอลัมน์ปุ่มใน Datagridview
ฉันกำลังพัฒนาแอปพลิเคชัน windows โดยใช้ C # ฉันใช้DataGridViewเพื่อแสดงข้อมูล ฉันได้เพิ่มคอลัมน์ปุ่มในนั้น ฉันต้องการทราบว่าฉันจะจัดการเหตุการณ์คลิกบนปุ่มนั้นใน DataGridView ได้อย่างไร

7
ฉันจะทำให้ฉลากอยู่กึ่งกลางใน WinForms ได้อย่างไร
ในWinFormsฉันใช้Labelเพื่อแสดงข้อความที่แตกต่างกันเช่นความสำเร็จความล้มเหลว ฯลฯ ฉันต้องการจัดกึ่งกลางของป้ายกำกับนั้นในรูปแบบกึ่งกลาง ฉันต้องการทางออกที่จะทำให้มันเป็นศูนย์กลางไม่ว่าจะมีเพียงหนึ่งคำหรือทั้งประโยคในฉลาก
137 c#  .net  winforms  centering 

11
ฉันจะแสดงเอาต์พุต / หน้าต่างคอนโซลในแอปพลิเคชันฟอร์มได้อย่างไร
หากต้องการติดอยู่ในทันทีตัวอย่างพื้นฐาน: using System; using System.Windows.Forms; class test { static void Main() { Console.WriteLine("test"); MessageBox.Show("test"); } } หากฉันรวบรวมสิ่งนี้ด้วยตัวเลือกเริ่มต้น (โดยใช้ csc ที่บรรทัดคำสั่ง) ตามที่คาดไว้มันจะคอมไพล์กับแอปพลิเคชันคอนโซล นอกจากนี้เนื่องจากฉันนำเข้าSystem.Windows.Formsมันจะแสดงกล่องข้อความด้วย ตอนนี้ถ้าฉันใช้ตัวเลือก/target:winexeซึ่งฉันคิดว่าเหมือนกับการเลือกWindows Applicationจากตัวเลือกภายในโครงการตามที่คาดไว้ฉันจะเห็นเฉพาะกล่องข้อความและไม่มีเอาต์พุตคอนโซล (ในความเป็นจริงเมื่อเปิดใช้งานจากบรรทัดคำสั่งฉันสามารถออกคำสั่งถัดไปก่อนที่แอปพลิเคชันจะเสร็จสมบูรณ์) ดังนั้นคำถามของฉันคือ - ฉันรู้ว่าคุณสามารถมีเอาต์พุต "windows" / แบบฟอร์มจากแอปพลิเคชันคอนโซลได้ แต่จะมีการแสดงคอนโซลจากแอปพลิเคชัน Windows หรือไม่

12
ฉันจะจัดกึ่งกลางหน้าต่างบนหน้าจอใน C # ได้อย่างไร
ฉันต้องการวิธีที่จะจัดกึ่งกลางหน้าต่างปัจจุบัน ตัวอย่างเช่นหากผู้ใช้กดปุ่มฉันต้องการให้หน้าต่างอยู่กึ่งกลางหน้าจอของตัวเอง ฉันรู้ว่าคุณสามารถใช้คุณสมบัติการเริ่มต้นได้ แต่ฉันไม่สามารถหาวิธีใช้สิ่งอื่นนอกเหนือจากเมื่อแอปพลิเคชันเริ่มทำงานครั้งแรก ดังนั้นฉันจะจัดกึ่งกลางของแบบฟอร์มบนหน้าจอได้อย่างไร
129 c#  winforms  screen  center 

4
วิธีเพิ่มบรรทัดใหม่ในไฟล์ txt
ฉันต้องการเพิ่มบรรทัดใหม่พร้อมข้อความในไฟล์ date.txt ของฉัน แต่แทนที่จะเพิ่มลงใน date.txt ที่มีอยู่แอปกำลังสร้างไฟล์ date.txt ใหม่ .. TextWriter tw = new StreamWriter("date.txt"); // write a line of text to the file tw.WriteLine(DateTime.Now); // close the stream tw.Close(); ฉันต้องการเปิดไฟล์ txt เพิ่มข้อความปิดและหลังจากนั้นคลิกบางสิ่ง: เปิด date.txt เพิ่มข้อความและปิดอีกครั้ง ดังนั้นฉันจะได้รับ: กดปุ่ม: txt เปิด -> เพิ่มเวลาปัจจุบันแล้วปิด กดปุ่มอื่นแล้ว txt เปิด -> เพิ่มข้อความ "ตกลง" หรือ "ไม่ตกลง" ในบรรทัดเดียวกันแล้วปิดอีกครั้ง …


3
ไฟล์หลายนามสกุลใน OpenFileDialog
ฉันจะใช้นามสกุลไฟล์หลาย ๆ ไฟล์ภายในกลุ่มเดียวได้OpenFileDialogอย่างไร? ฉันมีFilter = "BMP|*.bmp|GIF|*.gif|JPG|*.jpg|PNG|*.png|TIFF|*.tiff" และต้องการสร้างกลุ่มดังนั้น JPG จึงเป็น * .jpg และ * .jpeg, TIFF คือ * .tif และ * .tiff และ 'ประเภทกราฟิกทั้งหมด'? ฉันจะทำเช่นนั้นได้อย่างไร?

8
ฉันจะรันโค้ดหลังจากที่โหลดแบบฟอร์มได้อย่างไร
ใน. NET Windows Forms มีเหตุการณ์ที่เริ่มทำงานก่อนที่ฟอร์มจะถูกโหลด (Form.Load) แต่ไม่มีเหตุการณ์ที่เกี่ยวข้องที่จะเริ่มทำงานหลังจากที่ฟอร์มโหลด ฉันต้องการเรียกใช้ตรรกะบางอย่างหลังจากโหลดแบบฟอร์มแล้ว ใครช่วยแนะนำวิธีแก้ปัญหาได้ไหม
127 c#  .net  winforms  events 

3
ปรับขนาดภาพตามสัดส่วนด้วยข้อ จำกัด MaxHeight และ MaxWidth
การใช้System.Drawing.Image. หากความกว้างหรือความสูงของรูปภาพเกินค่าสูงสุดจำเป็นต้องปรับขนาดตามสัดส่วน หลังจากปรับขนาดแล้วจำเป็นต้องตรวจสอบให้แน่ใจว่าความกว้างหรือความสูงยังไม่เกินขีด จำกัด ความกว้างและความสูงจะถูกปรับขนาดจนกว่าจะไม่เกินสูงสุดและต่ำสุดโดยอัตโนมัติ (ขนาดใหญ่ที่สุดที่เป็นไปได้) และยังคงรักษาอัตราส่วนไว้

11
จะตรวจจับคีย์ที่กดอยู่ในปัจจุบันได้อย่างไร?
ในWindows Formsคุณสามารถทราบตำแหน่งปัจจุบันของเคอร์เซอร์ได้ทุกเมื่อด้วยคลาสCursors สิ่งเดียวกันนี้ดูเหมือนจะไม่สามารถใช้ได้กับแป้นพิมพ์ เป็นไปได้หรือไม่ที่จะทราบว่าShiftมีการกดแป้นหรือไม่ จำเป็นอย่างยิ่งที่จะต้องติดตามทุกการแจ้งเตือนของแป้นพิมพ์ (เหตุการณ์ KeyDown และ KeyUp)
124 c#  .net  winforms  keyboard 

15
หยุด 'Ding' เมื่อกด Enter
ฉันมีแอปพลิเคชัน Windows Forms ที่เรียบง่ายมาก และใน Windows (หรืออย่างน้อย Windows Forms Applications) เมื่อคุณกด Enter ในขณะที่อยู่ในตัวควบคุมกล่องข้อความบรรทัดเดียวคุณจะได้ยิน Ding เป็นเสียงที่ไม่ถูกใจซึ่งบ่งบอกว่าคุณไม่สามารถเข้าสู่การขึ้นบรรทัดใหม่ได้เนื่องจากเป็นกล่องข้อความบรรทัดเดียว ทั้งหมดนี้ไม่เป็นไร อย่างไรก็ตามในแบบฟอร์มของฉันฉันมีกล่องข้อความ 1 กล่องและปุ่มค้นหา และฉันกำลังอนุญาตให้ผู้ใช้ทำการค้นหาโดยกด Enter หลังจากที่พวกเขาพิมพ์เสร็จแล้วดังนั้นพวกเขาจึงไม่ต้องใช้เมาส์คลิกปุ่มค้นหา แต่เสียง Ding นี้เกิดขึ้น มันน่ารำคาญมาก เราจะทำอย่างไรให้เสียงนั้นไม่เล่นเลยในแบบฟอร์มของฉัน @David H - นี่คือวิธีที่ฉันตรวจจับการกด Enter: private void textBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { // Perform search now. } }

28
ผูก enum กับกล่องคำสั่งผสม WinForms แล้วตั้งค่า
หลายคนตอบคำถามเกี่ยวกับวิธีผูก enum กับ combo box ใน WinForms มันเป็นแบบนี้: comboBox1.DataSource = Enum.GetValues(typeof(MyEnum)); แต่นั่นก็ไร้ประโยชน์หากไม่สามารถตั้งค่าจริงที่จะแสดงได้ ฉันเหนื่อย: comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null ฉันได้ลองแล้ว: comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1 ใครมีความคิดว่าจะทำอย่างไร?
122 c#  .net  winforms  combobox  enums 

27
วิธีรับการควบคุมลูกทั้งหมดของรูปแบบ Windows แบบเฉพาะเจาะจง (ปุ่ม / กล่องข้อความ)
ฉันต้องการรับการควบคุมทั้งหมดในแบบฟอร์มที่เป็นประเภท x ฉันค่อนข้างแน่ใจว่าเคยเห็นรหัสนั้นในอดีตที่เคยใช้อะไรแบบนี้: dim ctrls() as Control ctrls = Me.Controls(GetType(TextBox)) ฉันรู้ว่าฉันสามารถทำซ้ำการควบคุมทั้งหมดในการรับเด็กโดยใช้ฟังก์ชันเรียกซ้ำได้ แต่มีอะไรที่ง่ายกว่าหรือตรงไปตรงมามากกว่านี้หรือไม่อาจเป็นดังนี้ Dim Ctrls = From ctrl In Me.Controls Where ctrl.GetType Is Textbox
120 c#  .net  vb.net  winforms  controls 

12
เลือกปุ่มตัวเลือกใดในกลุ่มนี้
ใช้ WinForms; มีวิธีที่ดีกว่าในการค้นหา RadioButton ที่ถูกตรวจสอบสำหรับกลุ่มหรือไม่? สำหรับฉันแล้วดูเหมือนว่าไม่จำเป็นต้องใช้รหัสด้านล่างนี้ เมื่อคุณตรวจสอบ RadioButton อื่นมันจะรู้ว่าจะยกเลิกการเลือกอันใด ... ดังนั้นจึงควรทราบว่ามีการตรวจสอบรายการใด ฉันจะดึงข้อมูลนั้นได้อย่างไรโดยไม่ต้องใช้คำสั่ง if จำนวนมาก (หรือสวิตช์) RadioButton rb = null; if (m_RadioButton1.Checked == true) { rb = m_RadioButton1; } else if (m_RadioButton2.Checked == true) { rb = m_RadioButton2; } else if (m_RadioButton3.Checked == true) { rb = m_RadioButton3; }

16
แนวทางปฏิบัติที่ดีที่สุดสำหรับการจัดการข้อยกเว้นในแอปพลิเคชัน Windows Forms?
ฉันกำลังอยู่ในขั้นตอนการเขียนแอปพลิเคชัน Windows Forms ตัวแรก ตอนนี้ฉันอ่านหนังสือ C # สองสามเล่มแล้วดังนั้นฉันจึงมีความเข้าใจค่อนข้างดีว่าคุณลักษณะของภาษา C # มีข้อยกเว้นอะไรบ้าง พวกเขาทั้งหมดค่อนข้างเป็นทฤษฎีอย่างไรก็ตามสิ่งที่ฉันยังไม่ได้รับคือความรู้สึกในการแปลแนวคิดพื้นฐานเป็นรูปแบบการจัดการข้อยกเว้นที่ดีในแอปพลิเคชันของฉัน มีใครอยากแบ่งปันมุกแห่งปัญญาในเรื่องนี้ไหม? โพสต์ข้อผิดพลาดทั่วไปที่คุณเคยเห็นมือใหม่อย่างตัวเองทำและคำแนะนำทั่วไปเกี่ยวกับการจัดการข้อยกเว้นเพื่อให้แอปพลิเคชันของฉันมีเสถียรภาพและมีประสิทธิภาพมากขึ้น สิ่งสำคัญที่ฉันกำลังพยายามหาคือ: ฉันควรโยนข้อยกเว้นอีกครั้งเมื่อใด ฉันควรลองมีกลไกจัดการข้อผิดพลาดส่วนกลางบ้างไหม การจัดการข้อยกเว้นที่อาจถูกโยนทิ้งมีผลการดำเนินงานเมื่อเทียบกับการทดสอบล่วงหน้าอย่างไร้ค่าเช่นมีไฟล์ในดิสก์หรือไม่ โค้ดที่เรียกใช้งานได้ทั้งหมดควรอยู่ในบล็อก try-catch-last หรือไม่? มีบางครั้งหรือไม่ที่อาจยอมรับบล็อกการจับที่ว่างได้? รับคำแนะนำทั้งหมดอย่างสุดซึ้ง!

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