调用控件来设置属性

时间:2010-03-23 11:53:09

标签: c# asp.net invoke

我有这个问题

ASP.net can’t update page from event handler

已经回答了!我唯一的问题是我真的不明白解决方案。如何在设置属性时调用控件。

我有一个标签控件,但似乎没有一个Invoke属性/方法。

我试过了......

PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(Label1);
        PropertyDescriptor myProperty = properties.Find("Text", false);
        myProperty.SetValue(Label1, "my value");

但这似乎与

相同
label1.text = "my value"

哪个不起作用

2 个答案:

答案 0 :(得分:3)

你需要这样的东西:

委托void UIDelegate(对象组件,对象值);

if (this.save_button.InvokeRequired)
{
    this.save_button.Invoke(new UIDelegate(TypeDescriptor.GetProperties(this.save_button).Find("Enabled", false).SetValue),
                                new object[] { this.save_button, true });
}
else
{
    this.save_button.Enabled = true;
}

答案 1 :(得分:2)

通常你会调用这样的控件:

this.label1.Invoke(new MethodInvoker(delegate
    {
        this.label1.Test = "my value";
    }));  

不幸的是,WebControls.Label上似乎没有Invoke方法。

解决这个问题的另一种方法是write web method which returns a string in web service and set it to Label.Text,我找到了一个例子here