方法

2014-09-03 57 views
-5

我想创建一个使用调用方法:方法

methodname(textBoxX); 

什么,我希望它做的是改变textBoxX的财产像

private void methodname(Object textbox) 
{ 
    tryparse (textbox.Text, out somevariable); 
    textbox.Text = something; 

} 
+2

为什么不是'TextBox textbox'而不是'Object textbox'? – Dmitry 2014-09-03 21:27:56

+4

你是否熟悉C#? – gustavodidomenico 2014-09-03 21:28:20

+0

你问是否可以创建一个TextBox作为参数的方法?当然...... – 2014-09-03 21:31:52

回答

0

嗯......这个问题引起了很多人的,但如果你想检查是否传递给方法的object是一个TextBox,然后设置了Text财产,你需要:

private void ChangeText(object target) 
{ 
    var tBox = target as TextBox; 

    if (tBox != null) 
     tBox.Text = "new value"; 
} 

编辑

这是现在误入这里我要问,为什么你需要这个,因为我什么都暗示可能不是最好的解决问题的办法的区域,但我们走了。如果您想知道对象是否具有Text属性,并相应地设置该值,则可以使用该属性。

在我的* .aspx页面中,我有:

<asp:TextBox runat="server" ID="TextBox1"></asp:TextBox> 
<asp:CheckBox runat="server" ID="CheckBox1" /> 
<asp:RadioButton runat="server" ID="RadioButton1" /> 
<asp:Panel runat="server" ID="Panel1"></asp:Panel> 

Page_Load事件是这样的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    ChangeText(TextBox1); 
    ChangeText(RadioButton1); 
    ChangeText(CheckBox1); 
    ChangeText(Panel1); 
} 

ChangeText()实施如下:

private void ChangeText(object target) 
{ 
    var textProperty = target.GetType().GetProperty("Text"); 

    if (textProperty != null) 
    { 
     try 
     { 
      target.GetType().GetProperty("Text").SetValue(target, "New Value", null); 
     } 
     catch (Exception ex) 
     { 
      if (ex is ArgumentException 
       || ex is MethodAccessException 
       || ex is TargetInvocationException) 
      { 
       // Unable to set the property for whatever reason 
       return; 
      } 

      // All other exceptions -- something unexpected happened. 
      throw; 
     } 
    } 
} 

前三个元素的Text属性已修改; Panel没有,因为那里没有Text属性。

+0

但我可以使用复选框或单选按钮作为任何其他目标,是否正确? – ng80092a 2014-09-03 21:46:05

+0

请参阅此编辑。 – barrick 2014-09-03 21:57:53

1

是的,这是可能的。虽然,我会按照德米特里的说法,使用TextBox txtBx1作为参数。通过这样做,您可以传入一个TextBox对象,然后可以访问所有的TextBox方法和属性,例如txtBx1.Text="some text"

1

是的,这是可能的,但您不需要将参数设置为Object,只需将其设置为TextBox即可。