我动态了一个label控件,代码如下Label lb1 = new Label();
                    lb1.Text = comboBox2.Text;
                    lb1.Size = new System.Drawing.Size(84, 14);
                    pictureBox1.Controls.Add(lb1);
                    lb1.BackColor = Color.Yellow;
                    lb1.Location = new Point(115, 250);
                    lb1.Update();
我单步调试,发现label中的text值有改变,但是在界面上显示则没变化,请问这是什么问题?

解决方案 »

  1.   

    怎么着你也等 lb1.Update(); 这类语句完全执行完、线程交还给UI程序的时候,才能刷新界面呢吧!你在那里断点“调试”,其实就是在阻塞线程执行呢!根本没有轮到调用UI去刷新界面的代码。如果你一定要断点调试时看到这个,那么就在中断的代码之前补充一条语句Application.DoEvent();
      

  2.   

    我把楼主贴代码完全拷贝在本地debug了下没有问题,请看下是不是其它地方的问题
      

  3.   

    我自己debug也没问题   label的value可以确定是正确的,就是界面显示问题
      

  4.   

    有个button按钮和combobox控件,当button按下,连接数据库,如果数据库中查到数据就执行上面那段代码
      

  5.   

    你每按一次按钮,就new一个Label,然后又添加一次,之前的让GC自己去收集垃圾?上面你给的代码,我试过了,可以达到效果。单步跟踪,请你等整个按钮的Click事件处理完成再看效果。
      

  6.   

    您说的按钮的click事件是处理完成了,但是没有效果。还有,能说下按一次按钮就又添加一次label这个有没有更好的办法。  谢谢!
      

  7.   

    1. 我这仿照你的要求,先读取数据库,然后把取出的某一行的某列的值给Label.Text。这个Label能显示出来
    2. 如果Label是固定要显示的,那最简单的办法是在设计时就在指定位置放一个Label。然后在Form_Load时设置其Visiable为false,从而隐藏它。之后在这个Button的Click事件里设置Label显示,并设置其他属性即可。
      

  8.   

    第一,请问一开始按下按钮可以显示  那combobox选择不同的内容再按一次按钮也可以显示出来吗
    第二,我一开始也是使用固定的label来显示,但是combobox绑定了数据库,而label又要跟combobox同步,那这样的话,把label写死了就达不到预期的效果了
      

  9.   

    上面的各位不好意思,是我没有表达清楚,我使用动态label是可以显示出来,但是第二次按下按钮的时候label值变了,而界面上的并没有改变
      

  10.   

    第一,请问一开始按下按钮可以显示 那combobox选择不同的内容再按一次按钮也可以显示出来吗
    可以,因为每次Label的Text都是从ComboBox.Text取出来的第二,我一开始也是使用固定的label来显示,但是combobox绑定了数据库,而label又要跟combobox同步,那这样的话,把label写死了就达不到预期的效果了
    1. 你上面的代码是点Button后才把Label的文本设置为ComboBox的。如果要Combox改变选项,Label的文本就改变,请映射ComboBox的SelectedChanged事件。
    2. 你的Label出现在固定位置,固定大小,文本也是固定取自ComboBox。本身就是固定的
      

  11.   

    感谢abbey(老毕)的解答,我不懂是什么问题,我重启了VS2010后重新编译就可以了,同时也感谢楼上各位。
      

  12.   

    感谢abbey(老毕)的解答,我不懂是什么问题,我重启了VS2010后重新编译就可以了,同时也感谢楼上各位。
      

  13.   

    下面的示例,是刚才解决你的问题临时写的。目的是 在ComboBox中选择一项用户的姓名,然后在Label上显示他所属的国家名。这是我为Combo加载用户列表的代码
    private void readDB_Load(object sender, EventArgs e)
    {
        using (NorthwindEntities db = new NorthwindEntities())
        {
            List<string> customernames = db.Customers.Select(c => c.ContactName).Distinct().ToList<string>();
            this.comboBox1.DataSource = customernames;
            this.comboBox1.SelectedIndex = 0;
        }
    }这是按钮点击事件的代码:
    private void button1_Click(object sender, EventArgs e)
    {
        using (NorthwindEntities db = new NorthwindEntities())
        {
            Customer customer = db.Customers
                .Where(c => c.ContactName == this.comboBox1.SelectedValue)
                .FirstOrDefault();        this.label1.Text = customer.Country;
        }
    }