我有一个带有ComboBox的表单,其中填充了3个项目。
当我添加以下语句时: comboBox1.Text = "A";和comboBox1.DroppedDown = true;
下拉列表的第一项被自动选中: comboBox1.Text显示"Abc“而不是"A”。
代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace testComboBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1 = new ComboBox();
PopulateComboBox();
comboBox1.Location = new Point((this.Width - comboBox1.Width) / 2, 80);
this.Controls.Add(comboBox1);
comboBox1.Text = "A";
comboBox1.DroppedDown = true;
}
ComboBox comboBox1;
private void PopulateComboBox()
{
comboBox1.Items.Add("Abc");
comboBox1.Items.Add("Abcd");
comboBox1.Items.Add("Abcde");
}
private void button_Exit_Click(object sender, EventArgs e)
{
this.Close();
}
}
}如何禁用自动选择ComboBox的Items集合中的第一项,以便comboBox1.Text显示"A“而不是"Abc"?
我不是在寻找一种一次性的变通办法。我需要一个通用的解决方案。
发布于 2021-02-19 19:27:50
设置此代码comboBox1.SelectedText = null;
public Form1()
{
InitializeComponent();
comboBox1 = new ComboBox();
PopulateComboBox();
comboBox1.Location = new Point((this.Width - comboBox1.Width) / 2, 80);
this.Controls.Add(comboBox1);
comboBox1.SelectedText = "A";
comboBox1.DroppedDown = true;
comboBox1.SelectedText = null;
}发布于 2021-02-21 01:49:47
在Loathing指向的线程的帮助下,我复制了扩展类ComboBoxAutoSelectExtension,并在表单中添加了一行代码: ComboBoxAutoSelectExtension.AutoSelectOff(comboBox1);
发布于 2021-02-21 04:16:48
如果从注释中的链接复制ComboBoxAutoSelectEx,那么在您自己的Form1代码中唯一需要做的事情就是:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1 = new ComboBox();
String text = "A";
comboBox1.Text = text;
comboBox1.Select(text.Length,1); // put cursor at the end of text
ComboBoxAutoSelectEx.AutoSelectOff(comboBox1); // Added
PopulateComboBox();
comboBox1.Location = new Point((this.Width - comboBox1.Width) / 2, 80);
this.Controls.Add(comboBox1);
}
protected override void OnLoad(EventArgs e) { // Added
base.OnLoad(e);
comboBox1.DroppedDown = true;
}
ComboBox comboBox1;
private void PopulateComboBox()
{
comboBox1.Items.Add("Abc");
comboBox1.Items.Add("Abcd");
comboBox1.Items.Add("Abcde");
}
private void button_Exit_Click(object sender, EventArgs e)
{
this.Close();
}
}https://stackoverflow.com/questions/66276618
复制相似问题