我想创建一个使用调用方法:方法
methodname(textBoxX);
什么,我希望它做的是改变textBoxX的财产像
private void methodname(Object textbox)
{
tryparse (textbox.Text, out somevariable);
textbox.Text = something;
}
我想创建一个使用调用方法:方法
methodname(textBoxX);
什么,我希望它做的是改变textBoxX的财产像
private void methodname(Object textbox)
{
tryparse (textbox.Text, out somevariable);
textbox.Text = something;
}
嗯......这个问题引起了很多人的,但如果你想检查是否传递给方法的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
属性。
是的,这是可能的。虽然,我会按照德米特里的说法,使用TextBox txtBx1
作为参数。通过这样做,您可以传入一个TextBox对象,然后可以访问所有的TextBox方法和属性,例如txtBx1.Text="some text"
。
是的,这是可能的,但您不需要将参数设置为Object,只需将其设置为TextBox即可。
为什么不是'TextBox textbox'而不是'Object textbox'? – Dmitry 2014-09-03 21:27:56
你是否熟悉C#? – gustavodidomenico 2014-09-03 21:28:20
你问是否可以创建一个TextBox作为参数的方法?当然...... – 2014-09-03 21:31:52