button事件问题

.Net技术 码拜 9年前 (2016-03-01) 960次浏览
本人的想法是点击button2后,可以鼠标点选东西,然后显示在combobox上,可是为什么现在点击按钮后,combobox空白,然后再嗯一下按钮才会在combobox上显示鼠标点选的东西呢?

private void button2_Click(object sender, EventArgs e)      // 机器时间鼠标点击选择
        {
            comboBox1.Items.Clear();
            IvcSelection Selection = app.findSelection("Component");
            if (Selection.ItemCount == 0)
            {
                return;
            }
            if (Selection.ItemCount >= 1)
            {
                for (int i = 0; i < Selection.ItemCount; i++)
                {
                    comp = (IvcComponent)Selection.getItem(i);
                    for (int a = 0; a < comp.PropertyCount; a++)
                    {
                        object name = comp.getProperty("Name");
                        string propName = comp.getPropertyName(a);
                        object propValue = comp.getProperty(propName);
                        comboBox1.Items.Add(name + "::" + propName + "::" + propValue);
                    }
                }
            }
            
        }
解决方案

40

private void button2_Click(object sender, EventArgs e)      // 机器时间鼠标点击选择
{
    comboBox1.Items.Clear();
    IvcSelection Selection = app.findSelection("Component");
    // if (Selection.ItemCount == 0)
    //     return;
    // 已经有了 count 判断,所以不需要再判断 >= 1 了,再说 >= 1 和 > 0 在这里貌似没什么区别
    // 其实这里倒是应当判断下 Selection 能否为 null
    if (Selection == null)
        return;
    // 假如 ItemCount == 0 则不会执行循环,所以上面的 ItemCount 判断是多余的
    for (int i = 0; i < Selection.ItemCount; i++) 
    {
        comp = (IvcComponent)Selection.getItem(i);
        if (comp == null)
            continue;
        for (int a = 0; a < comp.PropertyCount; a++)
        {
            // 利用格式化字符串
            string item = string.Format("{0}::{1}::{2}",
                comp.getProperty("Name"), comp.getPropertyName(a), comp.getProperty(propName));
            comboBox1.Items.Add(item);
        }
        if(comboBox1.Items.Count > 0)
            comboBox1.SelectedIndex = 0;  // 由于前面 Items.Clear() 了,所以 SelectedIndex = -1; 所以需要指定被选择的索引为 0
     }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明button事件问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)