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

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

30
ฉันจะอัพเดต GUI จากเธรดอื่นได้อย่างไร?
ซึ่งเป็นวิธีที่ง่ายที่สุดในการปรับปรุงLabelจากที่อื่นThread? ฉันมีการFormทำงานthread1และจากที่ฉันเริ่มหัวข้ออื่น ( thread2) ในขณะที่thread2กำลังประมวลผลไฟล์บางไฟล์ฉันต้องการที่จะอัปเดตLabelในFormกับสถานะปัจจุบันของการthread2ทำงานของ ฉันจะทำสิ่งนั้นได้อย่างไร

30
การใช้ INotifyPropertyChanged - มีวิธีที่ดีกว่านี้หรือไม่?
Microsoft ควรนำสิ่งที่น่าสนใจมาใช้INotifyPropertyChangedเช่นในคุณสมบัติอัตโนมัติเพียงระบุว่า{get; set; notify;} ฉันคิดว่ามันสมเหตุสมผลดี หรือมีภาวะแทรกซ้อนใด ๆ ที่จะทำหรือไม่ ตัวเราเองสามารถใช้บางอย่างเช่น 'แจ้งเตือน' ในคุณสมบัติของเรา มีวิธีการแก้ปัญหาที่สง่างามสำหรับการนำไปใช้INotifyPropertyChangedในชั้นเรียนของคุณหรือวิธีเดียวที่จะทำได้คือการเพิ่มPropertyChangedเหตุการณ์ในแต่ละสถานที่ให้บริการ หากเราไม่สามารถเขียนบางสิ่งเพื่อสร้างชิ้นส่วนของรหัสโดยอัตโนมัติเพื่อเพิ่มPropertyChanged เหตุการณ์ได้

22
การดำเนินการข้ามเธรดไม่ถูกต้อง: การควบคุมการเข้าถึงจากเธรดอื่นที่ไม่ใช่เธรดที่สร้างขึ้น
ฉันมีสถานการณ์ (แบบฟอร์ม Windows, C #, .NET) มีรูปแบบหลักที่โฮสต์การควบคุมผู้ใช้บางส่วน การควบคุมผู้ใช้ดำเนินการกับข้อมูลจำนวนมากเช่นถ้าฉันเรียกUserControl_LoadวิธีการโดยตรงUI จะไม่ตอบสนองต่อช่วงเวลาสำหรับการดำเนินการตามวิธีโหลด เพื่อเอาชนะสิ่งนี้ฉันโหลดข้อมูลในเธรดอื่น (พยายามเปลี่ยนรหัสที่มีอยู่ให้น้อยที่สุดเท่าที่จะทำได้) ฉันใช้เธรดผู้ทำงานเบื้องหลังซึ่งจะโหลดข้อมูลและเมื่อเสร็จแล้วจะแจ้งให้แอปพลิเคชันทราบว่าได้ทำงานเสร็จแล้ว ตอนนี้เป็นปัญหาจริง UI ทั้งหมด (ฟอร์มหลักและส่วนควบคุมย่อยผู้ใช้) ถูกสร้างขึ้นบนเธรดหลักหลัก ในวิธีโหลดของการควบคุมผู้ใช้ฉันกำลังดึงข้อมูลตามค่าของการควบคุมบางอย่าง (เช่นกล่องข้อความ) ใน userControl รหัสเทียมจะมีลักษณะเช่นนี้: รหัส 1 UserContrl1_LoadDataMethod() { if (textbox1.text == "MyName") // This gives exception { //Load data corresponding to "MyName". //Populate a globale variable List<string> which will be binded to …

14
ฉันจะบันทึกการตั้งค่าแอปพลิเคชันในแอปพลิเคชัน Windows Forms ได้อย่างไร
สิ่งที่ฉันต้องการบรรลุนั้นง่ายมาก: ฉันมีแอปพลิเคชัน Windows Forms (.NET 3.5) ที่ใช้พา ธ สำหรับการอ่านข้อมูล เส้นทางนี้สามารถแก้ไขได้โดยผู้ใช้โดยใช้แบบฟอร์มตัวเลือกที่ฉันมีให้ ตอนนี้ฉันต้องการบันทึกค่าพา ธ ไปยังไฟล์เพื่อใช้ในภายหลัง นี่จะเป็นการตั้งค่าที่บันทึกไว้ในไฟล์นี้ ไฟล์นี้จะอยู่ในโฟลเดอร์แอปพลิเคชันโดยตรง ฉันเข้าใจว่ามีสามตัวเลือก: ไฟล์ ConfigurationSettings (appname.exe.config) Registry ไฟล์ XML ที่กำหนดเอง ฉันอ่านว่าไฟล์การกำหนดค่า. NET ไม่ได้เล็งเห็นถึงการบันทึกค่ากลับคืนมา ในส่วนของรีจิสตรี้ผมอยากจะให้ไกลที่สุดเท่าที่จะทำได้ นี่หมายความว่าฉันควรใช้ไฟล์ XML ที่กำหนดเองเพื่อบันทึกการตั้งค่าหรือไม่ ถ้าเป็นเช่นนั้นฉันต้องการดูตัวอย่างโค้ดของ (C #) ฉันเคยเห็นการสนทนาอื่นในเรื่องนี้ แต่ก็ยังไม่ชัดเจนสำหรับฉัน

30
ฉันจะสร้างกล่องข้อความที่รับเฉพาะตัวเลขได้อย่างไร
ฉันมีแอพพลิเคชั่น windows windows พร้อมกล่องข้อความที่ฉันต้องการรับเฉพาะค่าจำนวนเต็ม ในอดีตที่ผ่านมาฉันได้ทำการตรวจสอบประเภทนี้โดยการโหลดเหตุการณ์ KeyPress มากเกินไปและเพิ่งลบอักขระที่ไม่ตรงกับข้อกำหนด ฉันดูที่ตัวควบคุม MaskedTextBox แต่ฉันต้องการโซลูชันทั่วไปที่สามารถใช้งานได้กับนิพจน์ทั่วไปหรือขึ้นอยู่กับค่าของตัวควบคุมอื่น ๆ เป็นการดีที่สิ่งนี้จะทำงานเช่นการกดอักขระที่ไม่ใช่ตัวเลขจะไม่สร้างผลลัพธ์หรือให้ข้อเสนอแนะแก่ผู้ใช้เกี่ยวกับอักขระที่ไม่ถูกต้องทันที
582 c#  .net  winforms  textbox 

22
การแทนที่. NET เว็บเบราเซอร์ควบคุมด้วยเบราว์เซอร์ที่ดีกว่าเช่น Chrome?
มีวิธีง่าย ๆ ในการแทรกเบราว์เซอร์ที่ทันสมัยลงในโปรแกรมประยุกต์. NET หรือไม่ เท่าที่ฉันเข้าใจตัวWebBrowserควบคุมคือ wrapper สำหรับIEซึ่งจะไม่เกิดปัญหายกเว้นว่ามันดูเหมือนว่าเป็นIEเวอร์ชันเก่ามากโดยทั้งหมดที่เกี่ยวข้องกับ CSS screw-ups เสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น (หากโปรแกรมการเรนเดอร์ไม่ได้ทำการแพตช์ฉันสามารถคาดหวังได้ว่าปัญหาการล้นบัฟเฟอร์ zillion จะได้รับการแก้ไขหรือไม่) และปัญหาอื่น ๆ ฉันใช้Visual Studio C # (รุ่นด่วน - สร้างความแตกต่างที่นี่หรือไม่?) ฉันต้องการรวมเว็บเบราว์เซอร์ที่ดีในแอปพลิเคชันของฉัน ในบางครั้งฉันใช้เพื่อจัดการขั้นตอนการลงทะเบียนผู้ใช้ส่วนต่อประสานกับคุณสมบัติบางอย่างของเว็บไซต์ของฉันและสิ่งอื่น ๆ ตามลำดับนั้น แต่ฉันมีแอปพลิเคชั่นอื่นอยู่ในใจที่จะต้องควบคุม ... ฉันต้องการ: เบราว์เซอร์ที่สามารถรวมภายในหน้าต่างแอปพลิเคชันของฉัน (ไม่ใช่หน้าต่างแยกต่างหาก) การสนับสนุนที่ดีสำหรับ CSS, js และเทคโนโลยีเว็บอื่น ๆ เทียบเท่าเบราว์เซอร์ที่ทันสมัย ฟังก์ชันเบราว์เซอร์พื้นฐานเช่น "นำทาง", "ย้อนกลับ", "โหลดซ้ำ" ... การเข้าถึงโค้ดเพจและเอาท์พุตแบบเสรี ฉันกำลังคิดเกี่ยวกับ Chrome เนื่องจากอยู่ภายใต้ใบอนุญาต BSD แต่ฉันจะมีความสุขกับ IE …

18
วิธีลบตัวจัดการเหตุการณ์ทั้งหมดออกจากเหตุการณ์
ในการสร้างตัวจัดการเหตุการณ์ใหม่บนตัวควบคุมคุณสามารถทำได้ c.Click += new EventHandler(mainFormButton_Click); หรือสิ่งนี้ c.Click += mainFormButton_Click; และเมื่อต้องการลบตัวจัดการเหตุการณ์คุณสามารถทำได้ c.Click -= mainFormButton_Click; แต่คุณจะลบตัวจัดการเหตุการณ์ทั้งหมดออกจากเหตุการณ์ได้อย่างไร
366 c#  .net  winforms  events 

11
ฉันจะสร้างกล่องข้อความด้วยตัวเลือก“ ใช่”,“ ไม่” และ DialogResult ได้อย่างไร?
ฉันต้องการทำให้กล่องข้อความเป็นแบบง่าย / ไม่เลือกใช่ แต่ฉันคิดว่ามันไร้สาระในการออกแบบฟอร์มสำหรับสิ่งนั้น ฉันคิดว่าฉันสามารถใช้ MessageBox เพิ่มปุ่ม ฯลฯ เพื่อทำสิ่งนี้ให้สำเร็จ มันง่าย แต่เนื่องจากไม่มี DialogResult ส่งคืนฉันจะดึงผลลัพธ์ได้อย่างไร

9
ฉันจะจัดกลุ่มปุ่มตัวเลือก Windows Form ได้อย่างไร
ฉันจะจัดกลุ่มปุ่มตัวเลือกในแอปพลิเคชัน Windows Form ได้อย่างไร (เช่น radiobuttonlist ของ ASP.NET!) ดังนั้นฉันสามารถสลับระหว่างแต่ละกรณีที่เลือกจากตัวเลือก

11
ฉันจะเลื่อนไปที่ด้านล่างของกล่องข้อความหลายบรรทัดโดยอัตโนมัติได้อย่างไร
ฉันมีกล่องข้อความที่มีคุณสมบัติ. Multiline ตั้งค่าเป็นจริง ในช่วงเวลาปกติฉันจะเพิ่มบรรทัดใหม่ให้กับข้อความ ฉันต้องการให้กล่องข้อความเลื่อนไปที่รายการล่างสุดโดยอัตโนมัติ (รายการที่ใหม่ที่สุด) ทุกครั้งที่มีการเพิ่มบรรทัดใหม่ ฉันจะทำสิ่งนี้ได้อย่างไร
295 c#  winforms  textbox  scroll 

8
วิธีที่ดีที่สุดในการใช้แป้นพิมพ์ลัดในแอปพลิเคชัน Windows Forms
ฉันกำลังมองหาวิธีที่ดีที่สุดในการใช้แป้นพิมพ์ลัดทั่วไปของ Windows (เช่นCtrl+ F, Ctrl+ N) ในแอปพลิเคชันWindows Formsใน C # แอปพลิเคชันมีรูปแบบหลักซึ่งโฮสต์ฟอร์มลูกหลายรายการ (ทีละรายการ) เมื่อผู้ใช้กดCtrl+ Fฉันต้องการแสดงฟอร์มการค้นหาที่กำหนดเอง แบบฟอร์มการค้นหาจะขึ้นอยู่กับแบบฟอร์มลูกเปิดปัจจุบันในแอปพลิเคชัน ฉันคิดว่าจะใช้สิ่งนี้ในกิจกรรมChildForm_KeyDown : if (e.KeyCode == Keys.F && Control.ModifierKeys == Keys.Control) // Show search form แต่มันไม่ได้ผล เหตุการณ์ไม่ทำงานแม้แต่ตอนที่คุณกดปุ่ม ทางออกคืออะไร?

10
การใช้แอปพลิเคชัน DoEvents ()
สามารถApplication.DoEvents()ใช้ใน C #? ฟังก์ชั่นนี้เป็นวิธีที่ทำให้ GUI สามารถติดต่อกับส่วนที่เหลือของแอพได้ในลักษณะเดียวกับที่ VB6 DoEventsทำหรือไม่?
272 c#  winforms  doevents 

10
ฉันจะทำให้เคอร์เซอร์หันไปเป็นเคอร์เซอร์รอได้อย่างไร?
ฉันมีแอปพลิเคชัน C # ที่มีผู้ใช้ที่ลงชื่อเข้าใช้และเนื่องจากอัลกอริทึมการแปลงแป้นพิมพ์มีราคาแพงจึงต้องใช้เวลาสักครู่จึงจะทำ ฉันจะแสดงเคอร์เซอร์ Wait / Busy (ปกติคือนาฬิกาทราย) ให้ผู้ใช้ทราบได้อย่างไรว่าโปรแกรมกำลังทำอะไรอยู่ โครงการอยู่ใน C #
263 c#  .net  winforms  cursor 

9
ฉันจะลากและวางไฟล์ลงในแอปพลิเคชันได้อย่างไร
ฉันเคยเห็นสิ่งนี้ทำในสภาพแวดล้อมTurbo C ++ของ Borland แต่ฉันไม่แน่ใจว่าจะทำอย่างไรกับแอปพลิเคชัน C # ที่ฉันกำลังทำงาน มีวิธีปฏิบัติที่ดีที่สุดหรือ gotchas ระวังหรือไม่

11
ตั้งค่าตัวกรองเป็น OpenFileDialog เพื่ออนุญาตรูปแบบภาพทั่วไปหรือไม่
ฉันมีรหัสนี้ฉันจะอนุญาตให้ยอมรับรูปแบบภาพทั่วไปทั้งหมดได้อย่างไร PNG, JPEG, JPG, GIF? นี่คือสิ่งที่ฉันมี: public void EncryptFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; dialog.InitialDirectory = @"C:\"; dialog.Title = "Please select an image file to encrypt."; if (dialog.ShowDialog() == DialogResult.OK) { //Encrypt the selected file. I'll do this later. :) } } …

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