如何从一个按钮的单击方法访问其他按钮?我正在使用Milestone SDK(C#,Visual Studio)。
我尝试使用“ this。”,但是它显然不起作用...(我是C#的新手)...
在下面的示例中,我可以更改bbt按钮对象的“ CONTENT”(bbt.Content =“ TEST”;):
private void bbt_Click(object sender, RoutedEventArgs e)
{
var bbt = sender as Button;
bbt.Content = "TEST";
}
但是如何更改代码中定义的其他按钮的内容?例如,另一个按钮名称是“ action1”?
也许有一种方法可以这样声明:
var bbt = sender as Button;
但是对于所有其他按钮,以便我可以像访问“ bbt”一样访问它们?
想有一个允许mi做的代码:
action1.Content = "TEST";
其中action1是另一个按钮。
似乎我需要在引用“ action1”之前添加一些前缀,因为否则它不可见并生成:
CS0103当前上下文中不存在名称“ action1”
答案 0 :(得分:0)
好像您正在尝试更改按钮标签。 如果按钮已经存在,请使用:
private void bbt_Click(object sender, RoutedEventArgs e)
{
bbt.Text= "TEST";
}
答案 1 :(得分:0)
如果您有一个像flowLayoutPanel,panels
这样的容器,其中子项是按钮,则可以使用forloop
获取所有buttons
并将其更改为contents
//if without a container you must Name your buttons to button1,button2,button3
int i=0;
while(true){
i++;
Button button = new Button();
button.Name = "button"+i.toString();//output button1 to n
WindowsFormName.Controls.Add(button);
}
private void bbt_Click(object sender, RoutedEventArgs e)
{
//loop all controls
int y=0;
foreach(Control control in WindowsFormName.Controls){
y++;
string name = "Button"+y.toString();
//check if names are button1 or buttonN
if(control.Name.Equals(name){
control.Content = "TEST";
}
}
}
答案 2 :(得分:0)
如果该按钮与被单击的按钮位于同一层次结构,则您应该能够正常访问它(例如,action1.Text =“ hello world”;)。我相信您的问题可能是该按钮位于子控件上。
如果是这种情况,则必须编写某种类型的递归代码以找到所需的按钮(请参阅此帖子的答案以递归搜索Get control by name, including children的控件)
然后称呼它:
var actionButton = this.FindControlRecursively<Button> ("action1");