如何在button_click方法中引用变量值

本文关键字:方法 引用 变量值 click button | 更新日期: 2023-09-27 18:34:08

我有一个构造特殊消息框的类。在该类中,其中一个参数是我在构造函数中引用的变量但是,我需要从构造函数中识别该变量,更具体地说,当我单击按钮时。

查看了方法行为,并注意到为了让方法从变量中识别值,我必须像这样引用它。

static void SetString1(ref string value)
{
if (value == "cat") // Test parameter value
{
    Console.WriteLine("Is cat");
}
value = "dog"; // Assign parameter to new value
}

我想做同样的事情,但是在按钮单击方法中,但是如果我尝试引用变量"variavelcaixa",它将给我"匹配的委托 System.eventhandler buttonRight_click没有重载"。这是什么意思,我应该如何成功引用变量?

private void buttonRight_Click(object sender, System.EventArgs e, ref int variavelcaixa)
    {
        if (checkBox1.Checked == true)
        { variavelcaixa = 1; }
        else { variavelcaixa = 0; }
    }

编辑:我在特殊消息框类中的代码如下:

     public partial class BetterDialog : Form
   {
    public int variavelcaixa;
 static public DialogResult ShowDialog(string title, string largeHeading, string smallExplanation,
        string leftButton, string rightButton, Image iconSet, ref int variavelcaixa)
    {
        using (BetterDialog dialog = new BetterDialog(title, largeHeading, smallExplanation, leftButton,
            rightButton, iconSet, ref variavelcaixa))
        {
            DialogResult result = dialog.ShowDialog();
            return result;
        }
    }
    /// <summary>
    /// The private constructor. This is only called by the static method ShowDialog.
    /// </summary>
    private BetterDialog(string title, string largeHeading, string smallExplanation,
        string leftButton, string rightButton, Image iconSet, ref int variavelcaixa)
    {
        this.Font = SystemFonts.MessageBoxFont;
        this.ForeColor = SystemColors.WindowText;
        InitializeComponent();
  //A bunch of graphic design
    }

在构造函数之外有按钮单击方法

    private void buttonRight_Click(object sender, System.EventArgs e)
    {
        if (checkBox1.Checked == true)
        { variavelcaixa = 1; }
        else { variavelcaixa = 0; }
    }

在主类上,我只需添加 ref variavelcaixa,并将特定变量附加到消息框对象

MsgBoxCheck.MessageBox dlg = new MsgBoxCheck.MessageBox();
                string icone = "C:''warning.png";
                DialogResult result = BetterDialog.ShowDialog("Alert",
      "main message in message box",
      "some secondary message",
      "", "Ok", System.Drawing.Bitmap.FromFile(icone), ref Variables.checkbox53naomostrarnovamente);

如何在button_click方法中引用变量值

按钮

单击事件处理程序必须具有 MSDN 引用(object sender, System.EventArgs e)函数签名。这就是为什么当您尝试让您的处理程序接收第三个参数时,会出现错误。

解决此问题的一种方法是使处理程序方法可以访问变量variavelcaixa。您可以通过将其声明为类中的全局变量来执行此操作。然后,可以在构造函数以及事件处理程序方法中分配给它。请注意,执行此操作后,不应将ref int variavelcaixa传递给事件处理程序方法。

基本上,一旦调用 showDialog 并传入 ref 参数,就需要将其分配给方法主体中的类变量variavelcaixaref Variables.checkbox53naomostrarnovamente将引用checkbox53naomostrarnovamente,而不是您的变量。因此,请将您的代码更改为:

static public DialogResult ShowDialog(string title, string largeHeading, string smallExplanation, string leftButton, string rightButton, Image iconSet, ref int p_variavelcaixa)
{
    using (BetterDialog dialog = new BetterDialog(title, largeHeading, smallExplanation, leftButton,
        rightButton, iconSet, ref p_variavelcaixa))
    {
        variavelcaixa = p_variavelcaixa;
        DialogResult result = dialog.ShowDialog();
        return result;
    }
}

请注意,我已将ref参数重命名为 p_variavelcaixa以帮助消除混淆。您可能也想看看这个演示以了解变量 - 参数的东西。