【问题标题】:Invoke a control to set a property调用控件来设置属性
【发布时间】:2010-03-23 11:53:09
【问题描述】:

我有这个确切的问题

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"

没用

【问题讨论】:

  • 您确定没有覆盖 PostBack 上的内容吗?
  • “调用控件”是什么意思?
  • @marc exaclty!我不知道 :-$ 我希望有人能解释得更多。

标签: c# asp.net invoke


【解决方案1】:

你需要这样的东西:

delegate void UIDelegate(object component, object value);

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;
}

【讨论】:

  • 查看上一个答案:InvokeRequired 不适用于 Web 控件。
【解决方案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

【讨论】:

  • 标签控件似乎没有 InvokeRequired 方法。我收到错误:“System.Web.UI.WebControls.Label”不包含“InvokeRequired”的定义
  • @Rob,抱歉没有意识到 WebControls.Label 不支持。添加了一些可以帮助您解决问题的链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多