2012-05-27 165 views
0

嗨,我在這裏遇到問題。所以你可以看到每當txtBtn0和txtBtn1被點擊時,它會增加自己的數組,然後用於squareChecked字符串。但是我想要首先做的是在txtBtn0和txtBtn1沒有被點擊的情況下給出錯誤信息。但它不會彈出任何東西。該按鈕不起作用

 public partial class MainForm : Form 
{ 
    public int[] clickNumBoxArray = Enumerable.Repeat(1, 81).ToArray(); 

    public MainForm() 
    { 
     InitializeComponent(); 



    } ... ... ... 



     private void btn1_Click(object sender, EventArgs e) { 
     UserSquare checkClickedBox = new UserSquare(); 

     string checkClickBox = checkClickedBox.squareChecked(); 
     if (checkClickedBox == null) { 
     MessageBox.Show("You did not enter any text on the form"); 
     } 
    } 

    private void txtBtn1_Click(object sender, EventArgs e) { 
     clickNumBoxArray[1]++; 
     if (clickNumBoxArray[1] % 2 == 0) { 
      txtBtn1.BackColor = System.Drawing.Color.DarkOrange; 
     } else { 
      txtBtn1.BackColor = System.Drawing.Color.WhiteSmoke; 
     } 
    } 

    private void txtBtn0_Click(object sender, EventArgs e) { 
     clickNumBoxArray[0]++; 
     if (clickNumBoxArray[0] % 2 == 0) { 
      txtBtn0.BackColor = System.Drawing.Color.DarkOrange; 
     } else { 
      txtBtn0.BackColor = System.Drawing.Color.WhiteSmoke; 
     } 
    } 

這是其他類

 class UserSquare { 
    public string squareChecked() { 
     string clickedBoxes = null; 
     MainForm numBoxArray = new MainForm(); 
     int[] clickNumBoxArray = numBoxArray.clickNumBoxArray; 
     for (int i = 0; i < 81; i++) { 
      if (clickNumBoxArray[i] % 2 == 0) { 
       clickedBoxes += "txtBtn" + i + ", "; 
      } 
     } return clickedBoxes; 
    } 

回答

1

關於IndexOutOfRange Exception你的問題是,你在這裏實現你的清單

public int[] clickNumBoxArray = Enumerable.Repeat(1, 80).ToArray(); 

爲從1開始和結束80 = 80個元件

但在方法的for loop從0開始並完成81 = 81個元件

和關於由誤差控制..簡單和棘手..ÿ ou可以實現internal/public boolean作爲默認false,並在鼠標事件中設置爲true,因爲您需要(iemouseclick事件)..您的錯誤方法的結束或您需要的其他位置,設置爲返回false以準備好另一次點擊 - 事件控制

關於ButtonClick不會觸發它的事件(如果我沒有誤解):你刪除了你的一些按鈕方法嗎?你能忘記實施它嗎?

一旦打開你的設計模式上點擊您要檢查你的控件,然後打開屬性=>事件..如果您實現的事件,那麼它應該是像這樣:(IE)

(財產)鼠標點擊(值)Button1_MouseClick

3

線:

for (int i = 0; i < 81; i++) 

應該是:

for (int i = 0; i < 80; i++) 

陣列clickNumBoxArray只有80元,標0到79你通過81項循環,指數從0到80

+0

謝謝但按鈕仍然無法正常工作 –

0

我通過移動

public int[] clickNumBoxArray = Enumerable.Repeat(1, 81).ToArray(); 

到UserSquare類固定它。我發現UserSquare類只在程序運行但沒有更新時纔會獲取值。