Winforms控件,其工作方式类似于ajax tag-completion

时间:2010-03-10 09:12:58

标签: c# .net winforms combobox tagging

我想创建一个winforms应用程序,您可以在其中为实体分配标签。 ofc我希望客户重复使用现有标签。这就是我想要的原因 在键入时向他们显示标签列表(类似于intellisense 在VS和标签 - 下拉甚至在stackoverflow中;))

  • 您是否有任何提供此功能的控件?
  • 我可以重用一个ComboBox吗? (这里我需要以编程方式删除它 - 如何?)

我想让taglist获得输入焦点但不会失去mainform-focus, 我希望它能够在所有窗户的顶部,甚至在主要区域范围之外 (如vs中的intellisense)

THX!

1 个答案:

答案 0 :(得分:1)

在这里,我创建了一个函数,通过表名从中完成自动完成,需要自动完成的字段名称以及需要定位的组合框。

请尝试以下代码:

public void AutoCompleteTextBox(string tableName, string fieldName, ComboBox combToAutoComp)
        {
            AutoCompleteStringCollection txtCollection = new AutoCompleteStringCollection();
            DataTable dtAutoComp = Dal.ExecuteDataSetBySelect("Stored_Procedure", fieldName, tableName);
            if (dtAutoComp.Rows.Count >= 0)
            {
                for (int count = 0; count < dtAutoComp.Rows.Count; count++)
                {
                    txtCollection.Add(dtAutoComp.Rows[count][fieldName].ToString());
                }
            }
            combToAutoComp.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            combToAutoComp.AutoCompleteSource = AutoCompleteSource.CustomSource;
            combToAutoComp.AutoCompleteCustomSource = txtCollection;
        }

这里Dal.ExecuteDataSetBySelect是我的实现,我创建了用于调用存储过程的连接,命令和数据适配器。您可以将它替换为您自己的实现。有关详情,请参阅this link