首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于继承 ComboBox,添加 ListBox控件,使其支持拼音自动提示功能,所遇到的有关问题

2012-12-14 
关于继承 ComboBox,添加 ListBox控件,使其支持拼音自动提示功能,所遇到的问题!如题:关于继承 ComboBox,添

关于继承 ComboBox,添加 ListBox控件,使其支持拼音自动提示功能,所遇到的问题!
如题:关于继承 ComboBox,添加 ListBox控件,使其支持拼音自动提示功能,所遇到的问题!

我开始用的是TextBox+ListBox来做的,功能已经完成正常使用了,但后来根据要求
要把拼音自动提示功能加到ComboBox中,所以我就继承了系统的 ComboBox 控件,
用 ToolStripDropDown 来加载 ListBox,然后显示的时候把 ToolStripDropDown 
显示到ComboBox的下方。
现在碰到的问题是:在ComboBox的文本框中输入文本时,输入一个字符后ComboBox的文本框
就自动失去焦点了,我用 .Focus() 再次获取焦点时,也能获取到焦点,能看到光标在闪动
但就是无法输入文本,ComboBox 的_TextChanged 事件也触发不了,不知什么原因。

以下是代码,请各位帮帮帮,分不够再加。


public class ComboBoxListBox  : ComboBox
{
    ToolStripControlHost ControlListBoxHost;
    ToolStripDropDown dropDown;
    ListBox listBox = new ListBox();

    public ComboBoxListBox()
    {
        DrawListBox();
    }

    private void DrawListBox()
    {          
        listBox.BorderStyle = BorderStyle.None;
        listBox.Click += new EventHandler(listBox_Click);
        base.TextChanged += new EventHandler(ComboBoxListBox_TextChanged);

        Form frmDataSource = new Form();
        frmDataSource.Controls.Add(listBox);
        frmDataSource.SuspendLayout();

        ControlListBoxHost = new ToolStripControlHost(listBox);
        ControlListBoxHost.AutoSize = false;
        // 重新调整一下位置
        ControlListBoxHost.Margin = new Padding(0, -1, 0, -1);

        dropDown = new ToolStripDropDown();
        dropDown.Width = this.Width;
        dropDown.Items.Add(ControlListBoxHost);
    }

    void ComboBoxListBox_TextChanged(object sender, EventArgs e)
    {
        this.ShowDropDown();
        this.Focus();
    }

    void listBox_Click(object sender, EventArgs e)
    {
        PopupGridView(e);
    }
    /// <summary>
    /// 弹出下拉表格并触发选择后事件
    /// </summary>
    /// <param name="e"></param>
    private void PopupGridView(EventArgs e)
    {
        if (ListBoxSpell.SelectedItems.Count > 0)
        {
            base.Text =  ListBoxSpell.SelectedItems[0].ToString();
        }

        dropDown.Close();
    }



    private void ShowDropDown()
    {
        if (dropDown != null)
        {
            dropDown.Show(this, 0, this.Height);
        }
    }
}


[解决办法]
现在的问题是, ComboBox 有焦点,看到光标在闪动,却输入不进去字符, 真是怪了?
[解决办法]
帖子沉的真快啊,没有人能解答一下吗?
[解决办法]
ToolStripDropDown.AutoClose


[解决办法]
每天回帖即可获得10分可用分
[解决办法]
引用:
ToolStripDropDown.AutoClose


这位兄弟,没有效果啊!
现在不是没有焦点的问题,是有焦点,能看到光标在闪动,就是输不进字符去
[解决办法]
在CSDN第一次感受的如此的冷漠,帖子沉的是如些的快,如同一片秋叶一样,独自飘零~~~
[解决办法]
所以,一般我都会去小论坛发帖。当然了,那个论坛要有牛人才行。

热点排行