簡體   English   中英

C#在按鈕的onClick事件上傳遞字符串

[英]C# pass a string on an onClick event of a button

好的,我不確定如何執行此操作,因為我試圖自學C#並同時創建一個工作程序。

我有一個IP地址列表:

List<IPAddress> addresses

一旦列表提交到表單,我就會動態為這些ip地址動態創建一組按鈕。

我想將與按鈕(IP地址)關聯的文本字符串傳遞給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地址。

我現在的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事件,因為它不是由Object或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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM