好的,我不知道如何做到这一点,因为我正在尝试自学C#并同时创建一个工作程序。
我有一个IP地址列表:
List<IPAddress> addresses
一旦列表提交到表单,我就会动态地为这些IP地址创建一组按钮。
我想将与按钮(IPAddress)关联的文本字符串传递给onclick事件。
Button b = new Button();
b.Text = "Router\n\r" + String.Format("{0}.{1}.{2}.126", ba[0], ba[1], ba[2]);
b.Dock = DockStyle.Fill;
b.Click += btnRouter_Click;
b.Size = new System.Drawing.Size(150, 50);
tlp.Controls.Add(b, 1, 0);
单击该按钮时,我希望它启动命令行参数以调用putty.exe,并转到动态创建此按钮时传递的IP地址版本,即xxx126地址。 / p>
我的onClick Stub现在是:
private void btnRouter_Click(Object sender, EventArgs e)
{
MessageBox.Show("You clicked the Router button!");
}
我想要的是:
private void btnRouter_Click(Object sender, EventArgs e)
{
myProcess.StartInfo.FileName = "Putty.exe";
myProcess.StartInfo.Arguments= "xxx.xxx.xx.126"
Process.Start(myProcess.StartInfo)
}
只有我不知道如何将该字符串添加到按钮onclick事件,因为它没有被Object或EventArgs传递。
答案 0 :(得分:4)
作为一种快速解决方案,你可以做到
Button b = new Button();
...
b.Tag = "my string";
然后在事件处理程序
中private void btnRouter_Click(Object sender, EventArgs e)
{
MessageBox.Show((string)((Button)sender).Tag);
}
或者,正如@paqogomez建议的那样,您可以使用Text
值而不是使用Tag
(如果您不介意将地址作为前缀"Router\n\r"
:
private void btnRouter_Click(Object sender, EventArgs e)
{
MessageBox.Show((string)((Button)sender).Text);
}