如何取消选择combobox的文本
我有一个kryptoncombobox,我用一组键值对绑定数据。 发生的事情是,当我在代码中设置所选项时,它突出显示文本。 如何防止这种情况或取消选择文本?
我尝试过以下方法:
// 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;
似乎没什么用。 任何帮助表示赞赏。
我管理完成此操作将覆盖我的控件/窗口的OnPaint事件并执行此操作
combobox1.SelectionLength = 0;
我可能找到了一个有效的解决方案:
如果您使用的是表单,请订阅表单的已显示事件。
要么
如果您正在使用UserControl(就像我一样),您可以订阅VisibleChanged事件。
在这种情况下,您可以执行以下操作:
foreach (ComboBox cbo in (this.Controls.Cast().Where(c => c is ComboBox).Select(c => (ComboBox) c))) { cbo.SelectionLength = 0; }
作为旁白:
我最终不得不为用户控件执行此操作,其中我将ComboBox添加到控件中,然后需要稍后动态设置其大小。 设置大小导致OP遇到突出显示。
试试吧
combo.SelectedText = String.Empty;
关于焦点问题:( MSDN )
当combobox失去焦点时,选择点将移动到文本的开头,并且任何选定的文本都将被取消选中
这么奇怪; 为什么以下不起作用:
anotherControl.Focus();
不确定你在后台可能正在做什么,即触发事件等。但是在combox selectedindexchanged事件中你可以添加anotherControl.Select()。
应该:)
我知道你提出这个问题已经有一段时间了。 但这是你能做的
combo.selectedindex = -1;
这是我做的:
private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e) { this.ActiveControl = cancelButton; }
您没有指定用户是否应该能够编辑ComboBox值。 如果没有,则ComboBox的DropDownStyle
应设置为ComboBoxStyle.DropDownList
。 这样,ComboBox只允许选择现有值,用户将无法键入新值,文本将永远不会突出显示。
这三行帮了我:
cbInstallationType.SelectionStart = 0; cbInstallationType.SelectionLength = 0; cbInstallationType.TabIndex = 99;
TabIndex必须不是第一个,因此它不是表单中的第一个项目
您只需将此代码放在生成的事件或按钮上,然后单击要取消选择combobox文本的位置
ComboBox1.SelectedItem = null;
在我的情况下,resize后出现。 这解决了它:
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”事件,该事件的任务是设置ComboBox的焦点。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox1.Focus(); }
从主窗体订阅“Paint”事件。 取消选择发生在此事件处理程序中:
private void MainForm_Paint(object sender, PaintEventArgs e) { comboBox1.SelectionLength = 0; }
我不在乎这多久了。 我们正在建立一个知识库。
我使用D5(可能以前的版本是相同的)。 你需要使用:
Combobox.SelLength := 0;
此外,如果这不起作用,则可以:避免使用默认样式(csDropDown)。 并将其设置为:
Combobox.Style := csDropDownList;
正如亚历克斯所说
谢谢。 效果很好!