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。
作为一个快速的解决方案,您可以执行
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);
}