该按钮不起作用

时间:2012-05-27 00:22:33

标签: c# arrays user-interface methods

嗨,我在这里遇到了问题。因此,无论何时单击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; 
    }

3 个答案:

答案 0 :(得分:3)

该行:

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

应该是:

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

数组clickNumBoxArray只有80个元素,索引0到79.你循环遍历81个项目,索引0到80。

答案 1 :(得分:1)

关于IndexOutOfRange Exception您的问题是您在此处实施了列表

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

从1开始,完成80 = 80个元素

但是在方法中,for loop从0开始,完成81 = 81个元素

以及关于错误控制..简单而棘手..您可以将internal / public boolean实现为默认false并在鼠标事件中设置为true你需要(iemouseclick事件)..你的错误方法的结束或你需要的地方,设置为返回false以准备好进行另一次点击事件控制

关于ButtonClick不会激活它的事件(如果我没有被误解):你删除了一些按钮方法吗?你能不能忘记实施它?

打开您的设计模式,点击您要检查的控件,然后打开属性=&gt;事件..如果您的事件已经实施,那么它应该如此:(即)

(property)MouseClick(value)Button1_MouseClick

答案 2 :(得分:0)

我通过移动

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

到UserSquare类。我发现UserSquare类只在程序运行但不更新时获取值。

相关问题