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

本文关键字:字符串 一个 按钮 onClick 事件 | 更新日期: 2023-09-27 18:17:37

好吧,我不确定如何做到这一点,因为我正在努力自学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地址的一个版本,即x.x.x.126地址。

我的onClick存根现在是:

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事件,因为它不是通过对象或EventArgs。

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

作为一个快速的解决方案,您可以执行

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