Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何取消选择组合框的文本_C#_.net_Winforms_Combobox_Krypton Toolkit - Fatal编程技术网

C# 如何取消选择组合框的文本

C# 如何取消选择组合框的文本,c#,.net,winforms,combobox,krypton-toolkit,C#,.net,Winforms,Combobox,Krypton Toolkit,我有一个氪组合框,我用键值对列表绑定它。发生的事情是,当我在代码中设置所选项目时,它会高亮显示文本。如何防止此情况或取消选择文本 我尝试了以下方法: // 1 combo.Select(0,0); // 2 combo.Focus(); anotherControl.Focus(); // 3 combo.SelectionStart = 0; combo.SelectionLength = combo.Text.Length; // 4 combo.SelectionStart = comb

我有一个氪组合框,我用键值对列表绑定它。发生的事情是,当我在代码中设置所选项目时,它会高亮显示文本。如何防止此情况或取消选择文本

我尝试了以下方法:

// 1
combo.Select(0,0);
// 2
combo.Focus();
anotherControl.Focus();
// 3
combo.SelectionStart = 0;
combo.SelectionLength = combo.Text.Length;
// 4 
combo.SelectionStart = combo.Text.Length;
combo.SelectionLength = 0;
        foreach (ComboBox cbo in (this.Controls.Cast<Control>().Where(c => c is ComboBox).Select(c => (ComboBox) c)))
        {
            cbo.SelectionLength = 0;
        }
似乎什么都不管用。感谢您的帮助。

试试这个

combo.SelectedText = String.Empty;
关于您的焦点问题:()

当组合框失去焦点时,选择点移动到 文本的开头和任何选定的文本将变为未选定

真奇怪;为什么以下各项不起作用:

anotherControl.Focus(); 

不确定您可能在后台执行什么操作,例如触发事件等。但是,在combox selectedindexchanged事件中,您可以添加另一个控件。Select()


那应该是:)

我知道你问这个问题已经有一段时间了。但这是你能做的

combo.selectedindex = -1;

我可能已经找到了一个有效的解决方案:

如果您正在使用表单,请订阅该表单显示的事件

如果您使用的是UserControl(像我一样),则可以订阅VisibleChanged事件

在这种情况下,您可以执行以下操作:

// 1
combo.Select(0,0);
// 2
combo.Focus();
anotherControl.Focus();
// 3
combo.SelectionStart = 0;
combo.SelectionLength = combo.Text.Length;
// 4 
combo.SelectionStart = combo.Text.Length;
combo.SelectionLength = 0;
        foreach (ComboBox cbo in (this.Controls.Cast<Control>().Where(c => c is ComboBox).Select(c => (ComboBox) c)))
        {
            cbo.SelectionLength = 0;
        }
foreach(ComboBox cbo in(this.Controls.Cast()。其中(c=>c是ComboBox)。选择(c=>(ComboBox)c)))
{
cbo.SelectionLength=0;
}
旁白:

最后,我不得不为一个用户控件这样做,在该控件中,我向控件添加了组合框,然后需要稍后动态设置它们的大小。设置大小会导致OP遇到的突出显示。

以下是我要做的:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
     this.ActiveControl = cancelButton;
}

您没有指定用户是否应该能够编辑组合框值。如果没有,则组合框的
DropDownStyle
应设置为
ComboBoxStyle.DropDownList
。这样,组合框将只允许选择现有值,用户将无法键入新值,文本将永远不会突出显示。

我试图覆盖控件/窗口的OnPaint事件并执行以下操作

combobox1.SelectionLength = 0;

这三句话帮助了我:

cbInstallationType.SelectionStart = 0;
cbInstallationType.SelectionLength = 0;
cbInstallationType.TabIndex = 99;

TabIndex必须不是第一个,因此它不是表单中的第一项

您只需将此代码放置在生成的事件上,或单击要取消选择组合框文本的按钮

ComboBox1.SelectedItem = null;

我不管这有多老。我们正在建立一个知识库

我使用D5(可能以前的版本也一样)。您需要使用:

Combobox.SelLength :=  0; 
此外,如果这不起作用,那么这一个可以:避免使用默认样式(csDropDown)。 并将其设置为:

Combobox.Style := csDropDownList; 
正如亚历克斯建议的那样


多谢各位。很好

在我的例子中,选择在调整大小后出现。这就解决了它:

textBox.Resize += (sender, args) =>
{
    Control c = sender as Control;
    if (c == null || c.Parent == null)
        return;

    c.Focus();
    c.Parent.Focus();
};

在事件SelectedIndexChanged上添加计时器,该计时器将在10毫秒后仅执行一次

new System.Threading.Timer((s) =>
            {
                comboBox1.Invoke(new Action(() =>
                {
                    comboBox1.Select(0, 0);
                }));
            }, null, 10, System.Threading.Timeout.Infinite);
订阅“SelectedIndexChanged”事件,该事件的任务是设置组合框的焦点

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    comboBox1.Focus();
}
从主窗体订阅“绘制”事件。取消选择发生在此事件处理程序中:

private void MainForm_Paint(object sender, PaintEventArgs e)
{
    comboBox1.SelectionLength = 0;
}

“选择”对我不起作用。但我发现了一个非常简单的窍门。 将此权限添加到SelectedIndexChanged事件中:

comboBox1.Hide();
comboBox1.Show();

对我有用

我知道,古老的邮政,古老的技术,但这条丑陋的单行线对我有用:

cb.SelectedValueChanged += (s, e) => { cb.BeginInvoke((MethodInvoker)delegate { cb.SelectionStart = cb.Text.Length; }); };

这是奇怪的,当我点击它加载后,然后点击其他东西,然后重点的东西工作!??!这让我抓狂你的组合框是否绑定到某个数据源?如果是,请尝试SelectedIndex=-1它是绑定的,但我会从列表中选择一项。这基本上是一个从db中预填充的表单,因此我需要选择正确的项。谢谢,但我没有试图更改所选项,我只是想取消突出显示文本。我与OP有相同的问题,这无助于完成此操作,我以后无法突出显示文本。它每次都会被取消选择,因为OnPaint方法经常被调用。对不起,这里显示的语法看起来根本不像C#。D5?你是说德尔菲吗?在[C#]标记的问题中?OP没有试图更改所选项目,他只是想取消突出显示文本。