У меня есть класс, который создает специальный вид сообщений. В этом классе один из аргументов - это переменная, которую я ссылаюсь на конструктор. Однако мне нужно, чтобы эта переменная была распознана из конструктора, а точнее, когда я нажимаю кнопку.Как отредактировать значение переменной внутри метода button_click
Я взглянул на поведение методов и заметил, что для того, чтобы метод распознавал значение переменной, мне пришлось ссылаться на нее так.
static void SetString1(ref string value)
{
if (value == "cat") // Test parameter value
{
Console.WriteLine("Is cat");
}
value = "dog"; // Assign parameter to new value
}
Я хочу сделать то же самое, но в методе нажатия кнопки, однако, если я пытаюсь передать переменную'variavelcaixa', это даст мне «Нет перегрузки buttonRight_click не соответствует делегируют System.EventHandler». Что это значит и как я должен успешно передать переменную?
private void buttonRight_Click(object sender, System.EventArgs e, ref int variavelcaixa)
{
if (checkBox1.Checked == true)
{ variavelcaixa = 1; }
else { variavelcaixa = 0; }
}
EDIT: код я имею в специальном классе окна сообщения выглядит следующим образом:
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);
Вы фактически не назначаете переменную, даже если вы передаете ее как 'ref'. Одноименное имя в параметре и переменной не будет автоматически присваивать значение. –
@ shree.pat18 Так как я могу связать их? – ng80092b
Назначьте переменную в 'ShowDialog'! –