大家在用vs2005 这类IDE的时候,当我们拖一个控件或组件的时候,注意到属性窗口中,如果该属性是有几个值来选择,或者通过另一个复杂的界面来设置,那么,我单击该格的时候,单元格的内部最右边会显示一个按钮,单击按钮,会显示下拉列表,弹出窗口等等,设置完后,当我将焦点移到别的位置后,显示的按钮就消失了。
   我曾用一个textbox和一个button试了试,发现不行。我的思路是先默认button的visiable属性是false。textbox获得焦点后,改为true。失去焦点后,再改为false。可实际上这样不行。应该是事件的先后顺序造成的。
    求个解决方案。

解决方案 »

  1.   

    private void SetMoreBotton(TextBox text)
    {
        Button btn = new Button();
        btn.BackColor = this.BackColor;
        btn.Font = this.Font;
        btn.Width = text.PreferredSize.Height;
        text.Controls.Add(btn);
        btn.Dock = DockStyle.Right;
        btn.Text = "…";
        btn.Cursor = Cursors.Hand;
        btn.Visible = false;
        btn.GotFocus+=new EventHandler(btn_GotFocus);
        text.Leave += new EventHandler(text_Leave);
        text.GotFocus += new EventHandler(text_GotFocus);
        btn.Click += new EventHandler(btn_Click);
    }void text_Leave(object sender, EventArgs e)
    {
        ((Control)sender).Controls[0].Visible = false;
    }void btn_Click(object sender, EventArgs e)
    {
        //在此添加代碼
    }void text_GotFocus(object sender, EventArgs e)
    {
        ((Control)sender).Controls[0].Visible = true;
    }void btn_GotFocus(object sender, EventArgs e)
    {
        ((Control)sender).Parent.Focus();
    }
    ------------------------------------------------
    LostFocus不能用,Leave可以確實是順序問題