如何在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);
单击事件处理程序必须具有 MSDN 引用(object sender, System.EventArgs e)
函数签名。这就是为什么当您尝试让您的处理程序接收第三个参数时,会出现错误。
解决此问题的一种方法是使处理程序方法可以访问变量variavelcaixa
。您可以通过将其声明为类中的全局变量来执行此操作。然后,可以在构造函数以及事件处理程序方法中分配给它。请注意,执行此操作后,不应将ref int variavelcaixa
传递给事件处理程序方法。
基本上,一旦调用 showDialog
并传入 ref
参数,就需要将其分配给方法主体中的类变量variavelcaixa
。 ref 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
以帮助消除混淆。您可能也想看看这个演示以了解变量 - 参数的东西。