首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ComboBox中禁用自动选择第一项?

如何在ComboBox中禁用自动选择第一项?
EN

Stack Overflow用户
提问于 2021-02-19 19:20:54
回答 3查看 104关注 0票数 0

我有一个带有ComboBox的表单,其中填充了3个项目。

当我添加以下语句时: comboBox1.Text = "A";和comboBox1.DroppedDown = true;

下拉列表的第一项被自动选中: comboBox1.Text显示"Abc“而不是"A”。

代码如下:

代码语言:javascript
复制
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"?

我不是在寻找一种一次性的变通办法。我需要一个通用的解决方案。

EN

回答 3

Stack Overflow用户

发布于 2021-02-19 19:27:50

设置此代码comboBox1.SelectedText = null;

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2021-02-21 01:49:47

在Loathing指向的线程的帮助下,我复制了扩展类ComboBoxAutoSelectExtension,并在表单中添加了一行代码: ComboBoxAutoSelectExtension.AutoSelectOff(comboBox1);

票数 0
EN

Stack Overflow用户

发布于 2021-02-21 04:16:48

如果从注释中的链接复制ComboBoxAutoSelectEx,那么在您自己的Form1代码中唯一需要做的事情就是:

代码语言:javascript
复制
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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66276618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档