簡體   English   中英

如何通過單擊按鈕觸發 form_Load 事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM