功能很简单,双击Item,将Item的值传TextBox;本来认为很基础很简单的问题,只要在控件的DoubleClick中判断一下就可以了,却没曾想没那么容易,遇到个棘手的问题。网上搜索相关资料,发现这个问题很多人都遇到过,不过解决方案都不怎么好。除了了那引自JS的解决方法还是针对Web的,我想在WinForm下解决,各位看看有什么好方法。
    起初加上if (ListBox1.Items.Count == 0) return;这一句,则在ListBox1的Item为空的时候返回,可在不为空的时候,点击空白处还是会出现问题。于是又判断SelectedIndex,为-1返回,可这么做还是有个问题,在未选中的时候一切正常,但在有选中的Item的时候问题又出现了,我双击空白处,可它把选中的那个Item的值传给TextBox了。
    在论坛里还看到一位仁兄是通过将剩下的Item填充为空,然后判断为空返回,但总感觉不是根本解决之道,特寻求各位高手帮助!

解决方案 »

  1.   

    你可以用try   出现异常不处理  这就可以了
      

  2.   

    在各种事件中  当点击非法区域时你是获取不到SelectedIndex   这个时候你在处理信息时就会有异常  通常的做法都是用try  不去处理   这是最佳的处理方法  不管你用什么办法都要写一大堆的判断  很麻烦  
      

  3.   

    我知道可以用Try,但是有一个问题,假如现在已经有一个Item被选中,然后你点空白的地方不会报错,而是把选中的Item的值传给TextBox的,这对一个程序的完善程度肯定是有影响的,虽然影响不大,我现在就想要解决这个问题,也顺便学习学习,谢谢各位了!
      

  4.   

    算了,不费那劲了,我觉得还是微软把这个控件设计的有缺陷,最主要的问题就在于,点击空白处的时候已经选中的Item还处于选中状态,这就让我们无法以SelectedItem来判断双击状态了。我也不较那个真了,改用ListView了,效果一样,只要一句判断就行了,省心!结贴!
      

  5.   

    可以这样解决,ListBox中增加item双击事件:public partial class Form5 : Form
        {
            public Form5()
            {
                InitializeComponent();
            }        private void Form5_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("aa");
                dt.Columns.Add("bb");
                for (int i = 0; i < 10; i++)
                {
                    dt.Rows.Add("aa" + i, "bb" + i);
                }
                dt.AcceptChanges();
                this.listBox1.DisplayMember = "bb";
                this.listBox1.DataSource = dt;
                this.listBox1.Height = 200;
                this.listBox1.MouseDoubleClick += new MouseEventHandler(listBox1_MouseDoubleClick);
            }        void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                int index = this.listBox1.IndexFromPoint(e.Location);
                if (index != System.Windows.Forms.ListBox.NoMatches)
                {
                    MessageBox.Show(index.ToString());
                    //do your stuff here
                }
            }
        }
      

  6.   

    顶顶顶,实在是太感谢wahtung了,谢谢,帮了我大忙了