none
winform 焦点问题 RRS feed

  • 问题

  • 我做了个窗体,上面有button,radioButton,listbox.如何让listbox一直占有焦点,也是是说点击Button后,listbox还占有焦点!

    2010年11月19日 14:19

答案

  • 你好!

    在控件焦点消失后再重新为它设置焦点,如下:

    public partial class Form1 : Form
    {
      public Form1()
      {
        InitializeComponent();
    
        this.Activated += new EventHandler(delegate(object o, EventArgs e)
        {
          if (this.listBox1.Items.Count > 0)
            this.listBox1.SelectedIndex = 0;
          this.listBox1.Focus();
        });
        this.listBox1.Leave += new EventHandler(delegate(object o, EventArgs e)
        {
          this.listBox1.Focus();
        });
      }
    }
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 桂磊 2010年11月20日 9:44
    2010年11月19日 15:11
    版主

全部回复

  • dear
    你可在点集完控件后再利用listBox1.Focus()设定焦点
            private void button2_Click(object sender, EventArgs e)
            {
                MessageBox.Show("2");
                this.listBox1.Focus();
                this.listBox1.Select();
            }
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    2010年11月19日 15:06
  • 你好!

    在控件焦点消失后再重新为它设置焦点,如下:

    public partial class Form1 : Form
    {
      public Form1()
      {
        InitializeComponent();
    
        this.Activated += new EventHandler(delegate(object o, EventArgs e)
        {
          if (this.listBox1.Items.Count > 0)
            this.listBox1.SelectedIndex = 0;
          this.listBox1.Focus();
        });
        this.listBox1.Leave += new EventHandler(delegate(object o, EventArgs e)
        {
          this.listBox1.Focus();
        });
      }
    }
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 桂磊 2010年11月20日 9:44
    2010年11月19日 15:11
    版主
  • 你写的我稍加改动了下,

        public partial class Form1 : Form
        {

            //添加listBox选择全局变量
            int s = 0;
            public Form1()
            {
                InitializeComponent();
                this.Activated+= new EventHandler(delegate(object o, EventArgs e)
                    {
                        if (this.listBox1.Items.Count > 0)
                            this.listBox1.SelectedIndex = s;
                        this.listBox1.Focus();
                    }
                    );
                this.listBox1.Leave += new EventHandler(delegate(object o, EventArgs e)
                    {
                        this.listBox1.Focus();
                    });
            }

           //用SelectedIndexChanged为s赋值

           private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                s = listBox1.SelectedIndex;
            }

    有别的好方法传递选定项吗?

    2010年11月20日 10:09