दिलचस्प पोस्ट
JQuery में तत्व के तत्व का मिलान कैसे किया जा सकता है? गिट Xcode परियोजनाओं के लिए फ़ाइल को अनदेखा करें एफ में "थ्रॉटलड" एसिंक डाउनलोड कस्टम सूची दृश्य आइटम जब लाइट क्लिक करें हाइलाइट करें जीआईटी के पोस्ट-अपडेट हुक से 'जीआईटी पुल' को कॉल करना स्प्लिट स्ट्रिंग में लंबाई स्ट्रिंग के द्वारा छोटे स्ट्रिंग्स में जावा.टिल.डेट का समय क्षेत्र कैसे सेट करें? मैं कैसे बता सकता हूं कि .NET 3.5 SP1 स्थापित है? क्या कोई ईक्लिप्स रिफैक्टरिंग एपीआई है जिसे मैं प्रोग्राम में कॉल कर सकता हूं? अतिरिक्त पोर्ट माइक्रोसॉफ्ट Azure Nodejs सुनो क्लासिक एएसपी में यूटीएफ -8 को आईएसओ -8859-1 में कनवर्ट करें मैं आवंटित धागा को कैसे बना सकता हूँ? ALTER TABLE स्टेटमेंट में 'डेली कैस्केड' को कैसे जोड़ें रास्पबेरी पी क्रॉस-कंपाइलर स्थापित करना Marquee UILabel / UITextField / NSTextField कैसे बनाने के लिए

C # winforms कॉम्बोबोक्स गतिशील स्वत: पूर्ण

मेरी समस्या इस एक के समान है: मैं गतिशील रूप से C # कन्बोब्क्स या टेक्स्ट बॉक्स में ऑटो पूर्ण प्रविष्टियों को कैसे बदल सकता / सकती हूं? लेकिन मुझे अभी भी समाधान नहीं मिल रहा है

समस्या संक्षेप में:

मेरे पास एक ComboBox और बड़ी संख्या में रिकार्ड हैं I जब उपयोगकर्ता टाइपिंग शुरू करता है, तो मैं उन अभिलेखों को लोड करना चाहता हूँ जो इनपुट पाठ से शुरू होता है और उपयोगकर्ता को स्वत: पूर्ण के लिए प्रदान करता है। जैसा कि ऊपर दिए गए विषय में वर्णित है, मैं उन्हें сomboBox_TextChanged लोड नहीं कर सकता, क्योंकि मैं हमेशा पिछले परिणामों को अधिलेखित करता हूं और उन्हें कभी नहीं देखता हूं।

क्या मैं इसे केवल ComboBox का उपयोग कर सकता हूँ? ( TextBox या ListBox TextBox नहीं)

मैं इस सेटिंग का उपयोग करता हूं:

 сomboBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend; сomboBox.AutoCompleteSource = AutoCompleteSource.CustomSource; 

Solutions Collecting From Web of "C # winforms कॉम्बोबोक्स गतिशील स्वत: पूर्ण"

यह मेरा अंतिम समाधान है यह बड़ी मात्रा में डेटा के साथ ठीक काम करता है मैं यह सुनिश्चित करने के लिए Timer का उपयोग करता हूं कि उपयोगकर्ता को मौजूदा मान मिलना चाहिए। यह जटिल दिखता है लेकिन ऐसा नहीं है इस विचार के लिए मैक्स लैम्बर्तिनी के लिए धन्यवाद

  private bool _canUpdate = true; private bool _needUpdate = false; //If text has been changed then start timer //If the user doesn't change text while the timer runs then start search private void combobox1_TextChanged(object sender, EventArgs e) { if (_needUpdate) { if (_canUpdate) { _canUpdate = false; UpdateData(); } else { RestartTimer(); } } } private void UpdateData() { if (combobox1.Text.Length > 1) { List<string> searchData = Search.GetData(combobox1.Text); HandleTextChanged(searchData); } } //If an item was selected don't start new search private void combobox1_SelectedIndexChanged(object sender, EventArgs e) { _needUpdate = false; } //Update data only when the user (not program) change something private void combobox1_TextUpdate(object sender, EventArgs e) { _needUpdate = true; } //While timer is running don't start search //timer1.Interval = 1500; private void RestartTimer() { timer1.Stop(); _canUpdate = false; timer1.Start(); } //Update data when timer stops private void timer1_Tick(object sender, EventArgs e) { _canUpdate = true; timer1.Stop(); UpdateData(); } //Update combobox with new data private void HandleTextChanged(List<string> dataSource) { var text = combobox1.Text; if (dataSource.Count() > 0) { combobox1.DataSource = dataSource; var sText = combobox1.Items[0].ToString(); combobox1.SelectionStart = text.Length; combobox1.SelectionLength = sText.Length - text.Length; combobox1.DroppedDown = true; return; } else { combobox1.DroppedDown = false; combobox1.SelectionStart = text.Length; } } 

यह समाधान बहुत अच्छा नहीं है। इसलिए अगर किसी के पास एक और समाधान है तो कृपया इसे मेरे साथ साझा करें

मैं भी इन प्रकार की आवश्यकताओं में हाल ही में आया हूं। मैं नीचे दिए गए गुणों को कोड लिखकर काम करता हूं। यदि यह आपकी सहायता करता है तो

यहां छवि विवरण दर्ज करें

हां, आप निश्चित रूप से कर सकते हैं … लेकिन इसे कुछ काम करने की आवश्यकता है जिससे कि यह मूल रूप से काम करे। यह कुछ कोड है जिसके साथ मैं आया था। ध्यान रखें कि यह कंबॉबॉक्स की स्वत: पूर्ण सुविधाओं का उपयोग नहीं करता है, और यदि आप इसे बहुत सारे मदों के माध्यम से हटाने के लिए उपयोग करते हैं तो यह काफी धीमा हो सकता है …

 string[] data = new string[] { "Absecon","Abstracta","Abundantia","Academia","Acadiau","Acamas", "Ackerman","Ackley","Ackworth","Acomita","Aconcagua","Acton","Acushnet", "Acworth","Ada","Ada","Adair","Adairs","Adair","Adak","Adalberta","Adamkrafft", "Adams" }; public Form1() { InitializeComponent(); } private void comboBox1_TextChanged(object sender, EventArgs e) { HandleTextChanged(); } private void HandleTextChanged() { var txt = comboBox1.Text; var list = from d in data where d.ToUpper().StartsWith(comboBox1.Text.ToUpper()) select d; if (list.Count() > 0) { comboBox1.DataSource = list.ToList(); //comboBox1.SelectedIndex = 0; var sText = comboBox1.Items[0].ToString(); comboBox1.SelectionStart = txt.Length; comboBox1.SelectionLength = sText.Length - txt.Length; comboBox1.DroppedDown = true; return; } else { comboBox1.DroppedDown = false; comboBox1.SelectionStart = txt.Length; } } private void comboBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Back) { int sStart = comboBox1.SelectionStart; if (sStart > 0) { sStart--; if (sStart == 0) { comboBox1.Text = ""; } else { comboBox1.Text = comboBox1.Text.Substring(0, sStart); } } e.Handled = true; } } 

यह कोड आपके फ़ॉर्म लोड पर लिखता है। यह कॉमबो बॉक्स में उपयोगकर्ता के प्रकार के पत्र को डेटाबेस में सभी टूर को प्रदर्शित करता है। यह कोड स्वचालित रूप से सुझाव देता है और उपयोगकर्ता को पसंद के रूप में सही विकल्प जोड़ता है।

  con.Open(); cmd = new SqlCommand("SELECT DISTINCT Tour FROM DetailsTB", con); SqlDataReader sdr = cmd.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(sdr); combo_search2.DisplayMember = "Tour"; combo_search2.DroppedDown = true; List<string> list = new List<string>(); foreach (DataRow row in dt.Rows) { list.Add(row.Field<string>("Tour")); } this.combo_search2.Items.AddRange(list.ToArray<string>()); combo_search2.AutoCompleteMode = AutoCompleteMode.SuggestAppend; combo_search2.AutoCompleteSource = AutoCompleteSource.ListItems; con.Close(); 

पिछले उत्तरों में कमियां हैं वांछित आइटम ड्रॉप डाउन सूची में चयन के साथ अपना स्वयं का संस्करण प्रस्तुत करता है:

  private ConnectSqlForm() { InitializeComponent(); cmbDatabases.TextChanged += UpdateAutoCompleteComboBox; cmbDatabases.KeyDown += AutoCompleteComboBoxKeyPress; } private void UpdateAutoCompleteComboBox(object sender, EventArgs e) { var comboBox = sender as ComboBox; if(comboBox == null) return; string txt = comboBox.Text; string foundItem = String.Empty; foreach(string item in comboBox.Items) if (!String.IsNullOrEmpty(txt) && item.ToLower().StartsWith(txt.ToLower())) { foundItem = item; break; } if (!String.IsNullOrEmpty(foundItem)) { if (String.IsNullOrEmpty(txt) || !txt.Equals(foundItem)) { comboBox.TextChanged -= UpdateAutoCompleteComboBox; comboBox.Text = foundItem; comboBox.DroppedDown = true; Cursor.Current = Cursors.Default; comboBox.TextChanged += UpdateAutoCompleteComboBox; } comboBox.SelectionStart = txt.Length; comboBox.SelectionLength = foundItem.Length - txt.Length; } else comboBox.DroppedDown = false; } private void AutoCompleteComboBoxKeyPress(object sender, KeyEventArgs e) { var comboBox = sender as ComboBox; if (comboBox != null && comboBox.DroppedDown) { switch (e.KeyCode) { case Keys.Back: int sStart = comboBox.SelectionStart; if (sStart > 0) { sStart--; comboBox.Text = sStart == 0 ? "" : comboBox.Text.Substring(0, sStart); } e.SuppressKeyPress = true; break; } } } 

मैंने मैक्स लम्बेर्तिनी के उत्तर को बहुत उपयोगी पाया है, लेकिन उसने अपनी हैंडल टेक्स्टविंग विधि को संशोधित किया है:

  //I like min length set to 3, to not give too many options //after the first character or two the user types public Int32 AutoCompleteMinLength {get; set;} private void HandleTextChanged() { var txt = comboBox.Text; if (txt.Length < AutoCompleteMinLength) return; //The GetMatches method can be whatever you need to filter //table rows or some other data source based on the typed text. var matches = GetMatches(comboBox.Text.ToUpper()); if (matches.Count() > 0) { //The inside of this if block has been changed to allow //users to continue typing after the auto-complete results //are found. comboBox.Items.Clear(); comboBox.Items.AddRange(matches); comboBox.DroppedDown = true; Cursor.Current = Cursors.Default; comboBox.Select(txt.Length, 0); return; } else { comboBox.DroppedDown = false; comboBox.SelectionStart = txt.Length; } } 

मैंने ऐसा कुछ लिखा था ….

 private void frmMain_Load(object sender, EventArgs e) { cboFromCurrency.Items.Clear(); cboComboBox1.AutoCompleteMode = AutoCompleteMode.Suggest; cboComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems; // Load data in comboBox => cboComboBox1.DataSource = ..... // Other things } private void cboComboBox1_KeyPress(object sender, KeyPressEventArgs e) { cboComboBox1.DroppedDown = false; } 

यह सब (वाई)

  using (var client = new UserServicesClient()) { var list = new AutoCompleteStringCollection(); list.AddRange(client.ListNames(query).ToArray()); comboBoxName.AutoCompleteCustomSource = list; }