[英]How to trigger form_Load event with button click
我已經完成了表單加載事件中的所有事情,但由於它在我的代碼中不會觸發多次,所以我無法訪問代碼的 rest,它只處理第一部分。
這是與 form.Load 一起使用的代碼,但有很多這樣的代碼,因為我正在設計一個兩個消除括號,我想要的是在開始時所有按鈕都啟用 = False 除了第一個 16 個玩家然后當 8 個按鈕是單擊下一個 8 個獲勝者按鈕將啟用 = true,我應該能夠單擊這 8 個按鈕。 但是在這段代碼中,我可以執行前 16 個,但是當它們啟用 = false 並且接下來的 8 個按鈕啟用 = true 時,我無法將它們的 colors 更改為綠色,因為 form.Load 只是在開頭輸入這些代碼。
private void _4teamDoubleElimination_Load(object sender, EventArgs e) // LOAD LOAD LOAD LOAD LOAD LOAD LOAD LOAD LOAD
{
static void deneme()
{
}
int roundCount = 0;
int i = 0;
Shuffle(form2ye_Gidecek_Veri);
foreach (Button button in new Button[] { buttonR1_1, buttonR1_2, buttonR1_3, buttonR1_4 }) // VERİLERİN ILK KEZ ALINMASI ama tekli sayılarda sorun cıkartır
{
button.Text = form2ye_Gidecek_Veri[i];
i++;
}
// 1.TUR
var Round1All = new[] { buttonR1_1, buttonR1_2, buttonR1_3, buttonR1_4 };
var Round2Winner = new[] { buttonR2_1, buttonR2_2 };
var Round2Loser = new[] { buttonLoseR1_1, buttonLoseR1_2 };
var Round3Winner = new[] { buttonR3_1 }; // BUTONLARIN ARRAY'E ALINMASI VE RENKLENDİRME
var Round3Loser = new[] { buttonLoseR1_1, buttonLoseR1_2 };
colorGreen(Round1All);
colorGreen(Round2Loser);
colorGreen(Round2Winner);
colorGreen(Round3Loser);
colorGreen(Round3Winner);
enabledFalse(Round2Loser);
enabledFalse(Round2Winner);
enabledFalse(Round3Loser);
enabledFalse(Round3Winner);
foreach (var button in Round1All)
{
button.Click += (sender, e) =>
{
if (checkNextRoundAvaliability(Round1All).Equals(true))
{
DialogResult dialogResult = MessageBox.Show(" Sonraki tura geçeceksiniz ", " Onaylıyor musunuz ? ", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
enabledTrue(Round2Loser);
roundCount += 1;
int i = 0;
int j = 0;
getNextRoundWinnerData(Round1All);
getNextRoundLoserData(Round1All);
foreach (var button in Round2Winner) // 2. RAUND UN VERİLERİ
{
button.Text = listBoxForWinner.Items[i].ToString();
i++;
}
foreach (var button in Round2Loser)
{
button.Text = listBoxForLoser.Items[j].ToString();
j++;
}
}
else
{
}
}
};
}
// LOSER ROUND 1
foreach (var button in Round2Loser)
{
button.Click += (sender, e) =>
{
if (checkNextRoundAvaliability(Round2Loser).Equals(true))
{
DialogResult dialogResult = MessageBox.Show("Sonraki tura geçeceksiniz ", "Onaylıyor musunuz ? ", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
roundCount += 1;
int i = 0;
int j = 0;
getNextRoundWinnerData(Round2Loser);
getNextRoundLoserData(Round2Loser);
foreach (var button in Round2Loser) // 2. RAUND UN VERİLERİ
{
button.Text = listBoxForWinner.Items[i].ToString();
i++;
}
foreach (var button in Round2Loser)
{
button.Text = listBoxForLoser.Items[j].ToString();
j++;
}
}
else
{
}
}
};
}
// WINNER ROUND 2
foreach (var button in Round2Winner)
{
button.Click += (sender, e) =>
{
if (checkNextRoundAvaliability(Round2Winner).Equals(true))
{
DialogResult dialogResult = MessageBox.Show("Sonraki tura geçeceksiniz ", "Onaylıyor musunuz ? ", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
getNextRoundWinnerData(Round2Winner);
getNextRoundLoserData(Round2Winner);
}
else
{
}
}
};
}
}
您可以從 Button_CLick 事件中調用 Form_Load 事件。
public void Form_Load(object? sender, EventArgs? e) // added '?' to avoid null warning
{
// code
}
public void Button_Click(object sender, EventArgs e)
{
From_Load(null, null)
}
但是,不建議這樣做,因為事件只應在事件實際發生時觸發。
而是創建一個新方法並由兩個事件調用它。
編輯評論:
public void Form_Load(object sender, EventArgs e)
{
NewMethod();
}
public void Button_Click(object sender, EventArgs e)
{
NewMethod();
}
public void NewMethod()
{
//Your code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.