C#:将字符串转换为对象引用

时间:2009-09-04 16:09:02

标签: c# types casting

基本上,按钮的标签属性是我需要动态引用的现有组合框的名称。它是处理多个按钮的通用功能。帮助

private void SQLButton(object sender, EventArgs e)
{
    magic(((Button)sender).Tag.ToString());
}

private void magic(string currentcombo)
{
    string CurrentText = (ComboBox).(currentcombo).Text;
}

6 个答案:

答案 0 :(得分:6)

您可以将Tag属性设置为实际的ComboBox,并完全避免您的问题。

//code when defining your button...
{
     sqlButton.Tag = comboBoxA;  //instead of comboBoxA.Name
}

private void SQLButton(object sender, EventArgs e)
{
    Button button = sender as Button;
    ComboBox comboBox = button.Tag as ComboBox;

    if (comboBox == null ) 
    {...}
    else
    {
        magic(comboBox);
    }
}

private void magic(ComboBox currentcombo)
{
    string CurrentText = currentcombo.Text;
}

答案 1 :(得分:4)

我明白你在追求什么 -

你想要将你的“神奇”程序改为:

private void magic(string currentCombo) {
    ComboBox box = this.Controls.Find(currentCombo) as ComboBox;
    if(box != null) {
        // You can do your "work" here...
        string currentText = box.Text;
    }
}

答案 2 :(得分:2)

如果你有一个控件的字符串id值,那么你可以使用FindControl获取对该控件的引用。

像...一样的东西。

Button btn = (Button)FindControl("some_id");

答案 3 :(得分:1)

我不知道它的winforms还是asp.net。我假设它是winforms

您可以使用this.Controls(theNameofTheControl)代替魔法。

答案 4 :(得分:1)

查看Controls.Find方法,使用名称获取Control的实例。

答案 5 :(得分:0)

如果magic函数中的currentcombo参数是您要更改的控件的标识符,则使用Page的函数FindControl:

string CurrentText = ((ComboBox)FindControl(currentcombo)).Text;

Page.FindControl()方法在页面命名容器中搜索具有指定标识符的服务器控件。