获得从pressed按钮返回值 [英] Get return value from pressed button

查看:147
本文介绍了获得从pressed按钮返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有弹出在特定事件的形式。它制定按钮从一个数组并设置标记值设置为特定值。所以,如果你是preSS或单击该按钮的功能应该返回变量值。

我怎样才能做到这一点?而且我怎么知道哪个按钮被点击? 这时的code返回的DialogResult,但我想从函数返回的标记值。应如何修改我的code,以便它可以做到这一点?

 公共静态的DialogResult选择框(字符串名称,字符串[] btnArray,字符串[] btnValueArray)
{
    Form表单=新表();

    按钮[] buttonArray;
    buttonArray =新按钮[5];

    form.Text =称号;

    的for(int i = 0; I< btnArray.Length;我++)
    {
        buttonArray [我] =新的Button();
        buttonArray [I]。文= btnArray [I]
        buttonArray [I] .TAG =新INT();
        buttonArray [I] .TAG = btnValueArray [I]

        buttonArray [I] .TabStop = FALSE;
        buttonArray [I] .Location =新System.Drawing.Point(0,I * 40);
        buttonArray [I] .Size =新System.Drawing.Size(240,40);
    }

    form.ClientSize =新的大小(240,268);
    form.Controls.AddRange(新控制[] {buttonArray [0],buttonArray [1],buttonArray [2]});
    form.FormBorderStyle = FormBorderStyle.FixedDialog;
    form.StartPosition = FormStartPosition.CenterScreen;
    form.MinimizeBox = FALSE;
    form.MaximizeBox = FALSE;

    的DialogResult的DialogResult = form.ShowDialog();
    返回的DialogResult;
}
 

解决方案

添加一个私有变量的形式:

 私有对象SelectedTag;
 

添加一个按钮单击处理程序:

 私人无效Button_Click(对象发件人,EventArgs的){
    SelectedTag =((按钮)发送方).TAG;
}
 

指定的处理程序创建的每个按钮:

  ..
buttonArray [I] .OnClick + = form.Button_Click;
..
 

然后在你的静态功能,只需返回 form.SelectedTag 代替的DialogResult。

I have a form that pops up at a specific event. It draws up buttons from an array and sets the Tag value to a specific value. So if you are to press or click this button the function should return the Tag value.

How can I do this? And how do I know which button was clicked? At this moment the code returns DialogResult, but I want to return the Tag value from the function. How shall I modify my code so that it can do this?

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

解决方案

Add a private variable in the form:

private object SelectedTag;

Add a button click handler:

private void Button_Click(object sender, EventArgs e) {
    SelectedTag = ((Button)sender).Tag;
}

Assign the handler to each button you create:

..
buttonArray[i].OnClick += form.Button_Click;
..

Then in your static function, simply return form.SelectedTag instead of the dialogresult.

这篇关于获得从pressed按钮返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆