C#在按钮的onClick事件上传递一个字符串

时间:2014-08-12 00:50:08

标签: c# string button onclick

好的,我不知道如何做到这一点,因为我正在尝试自学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传递。

1 个答案:

答案 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);
}