从按下的按钮获取返回值

Art*_*gas 2 .net c# compact-framework

我有一个弹出特定事件的表单.它从数组中绘制按钮并将Tag值设置为特定值.因此,如果您要按或单击此按钮,该函数应返回Tag值.

我怎样才能做到这一点?我怎么知道点击了哪个按钮?此时代码返回DialogResult,但我想从函数返回Tag值.我该如何修改我的代码以便它可以做到这一点?

public static DialogResult SelectBox(string title, string[] btnArray, string[] btnValueArray)
{
    Form form = new Form();

    Button[] buttonArray;
    buttonArray = new Button[5];

    form.Text = title;

    for (int i = 0; i < btnArray.Length; i++)
    {
        buttonArray[i] = new Button();
        buttonArray[i].Text = btnArray[i];
        buttonArray[i].Tag = new int();
        buttonArray[i].Tag = btnValueArray[i];

        buttonArray[i].TabStop = false;
        buttonArray[i].Location = new System.Drawing.Point(0, i * 40);
        buttonArray[i].Size = new System.Drawing.Size(240, 40);
    }

    form.ClientSize = new Size(240, 268);
    form.Controls.AddRange(new Control[] { buttonArray[0], buttonArray[1], buttonArray[2] });
    form.FormBorderStyle = FormBorderStyle.FixedDialog;
    form.StartPosition = FormStartPosition.CenterScreen;
    form.MinimizeBox = false;
    form.MaximizeBox = false;

    DialogResult dialogResult = form.ShowDialog();
    return dialogResult;
}
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 7

在表单中添加一个私有变量:

private object SelectedTag;
Run Code Online (Sandbox Code Playgroud)

添加按钮单击处理程序:

private void Button_Click(object sender, EventArgs e) {
    SelectedTag = ((Button)sender).Tag;
}
Run Code Online (Sandbox Code Playgroud)

将处理程序分配给您创建的每个按钮:

..
buttonArray[i].OnClick += form.Button_Click;
..
Run Code Online (Sandbox Code Playgroud)

然后在静态函数中,只返回form.SelectedTag而不是对话结果.