【问题标题】:C# Autocomplete Texbox Click EventC# 自动完成文本框点击事件
【发布时间】:2012-03-28 05:48:15
【问题描述】:

我使用 c# winforms Visual Studio 2010。我有一个文本框,其中包含一个列表作为自动完成数据源。一切都很好,除了单击自动完成时我没有找到该事件。我想要自动完成行命中和其他东西,除了只用选定的行值填充文本框。有可能吗?

非常感谢

【问题讨论】:

  • 不,没有事件,Windows 本身也不会生成任何通知。您只能看到副作用,TextChanged。背景信息在 SHAutoComplete 的 MSDN 文章中

标签: c# autocomplete textbox


【解决方案1】:

我进行了一个快速测试,这似乎可行,如果这很 hacky,请不要介意我。我创建了一个继承自TextBoxUserControl。它监视KeyDown 事件,该事件在TextChanged 事件之前触发,将位切换到true 并让TextChanged 事件检查该位并引发事件(AutoCompleteUsed)以提醒监视类自动- 使用了完整的功能。

public partial class MyTextBox : TextBox
{
    public delegate void AutoCompleteDelegate();
    public event AutoCompleteDelegate AutoCompleteUsed;
    public MyTextBox()
    {
        InitializeComponent();
        this.TextChanged += MyTextBox_TextChanged;
        this.KeyDown += MyTextBox_KeyDown;
    }
    private bool keyPressed = false;
    void MyTextBox_KeyDown(object sender, KeyEventArgs e)
    {
        keyPressed = true;
    }

    void MyTextBox_TextChanged(object sender, EventArgs e)
    {
        if (!keyPressed && AutoCompleteUsed != null)
        {
            AutoCompleteUsed();
        }
        keyPressed = false;
    }
}

编辑 1:@Hans Passant 在他的评论中给了我答案,我只是给了你一个工作(ish?)的例子。

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 2012-04-30
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    相关资源
    最近更新 更多