gpt4 book ai didi

c# - ComboBox 的 Editbox 部分被自动选中

转载 作者:可可西里 更新时间:2023-11-01 07:55:38 25 4
gpt4 key购买 nike

我有一个小问题困扰了我几个小时。

在我的 WinForms (.NET 3.5) 应用程序中,我在运行时在 TableLayoutPanel 中创建了一些 ComboBoxes (DropDownStyle = DropDown) 并用字符串填充它。 ComboBoxes 配置为自动调整大小(Anchor = Left | Right)。

问题是,无论何时调整 ComboBox 的大小(即调整对话框的大小),ComboBox 的编辑框部分都会被完全选中/突出显示。在我看来,这会给客户带来非常困惑的影响,我想避免这种情况。

如果 ComboBox 具有固定大小,则不会出现此问题。

另请注意,更改 DropDownStyle 不是一个选项 - 我需要手动输入文本的可能性。

我已经尝试过重写 OnPaint 方法,但效果不佳。我还尝试清除 ComboBox.Resize 事件中的选择,这在某种程度上起作用,但似乎是一个非常丑陋的解决方案 - 有很多闪烁,故意选择的文本被取消选择,我必须为每个添加事件处理程序以及我对话框中的每个 ComboBox。

这个问题有更好的解决方案吗?

提前谢谢你。

问候,安迪

最佳答案

这是一个老问题,但我发现它正在寻找答案并最终实现了我自己的解决方案。不妨将其张贴在这里,对吧?

    foreach (var cb in Controls.OfType<ComboBox>())
{
cb.Resize += (sender, e) => {
if (!cb.Focused)
cb.SelectionLength = 0;
};
}

intentionally selected text became deselected

此 WinForms 错误不会影响选定的组合框,因此通过忽略具有焦点的组合框,我们解决了丢失当前选择的问题。

I would have to add the event handler to each and every ComboBox on my dialog.

由 foreach 循环处理。如果您不想破坏设计器,或者让设计器破坏它,请将它放在 InitializeComponent() 或您的 .ctor 中。

there was a lot of flicker

我只会在快速调整大小时看到闪烁,但我使用的是 Win7,因此在 XP 上可能会有所不同。

关于c# - ComboBox 的 Editbox 部分被自动选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com