基本上,按钮的标签属性是我需要动态引用的现有组合框的名称。它是处理多个按钮的通用功能。帮助
private void SQLButton(object sender, EventArgs e)
{
magic(((Button)sender).Tag.ToString());
}
private void magic(string currentcombo)
{
string CurrentText = (ComboBox).(currentcombo).Text;
}
答案 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()方法在页面命名容器中搜索具有指定标识符的服务器控件。