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; 
    }
4

3 回答 3

3

该行:

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

应该:

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

该数组clickNumBoxArray只有 80 个元素,索引从 0 到 79。您正在循环 81 个项目,索引从 0 到 80。

于 2012-05-27T00:28:15.427 回答
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 不会触发其事件(如果我没有误解的话):您是否删除了某些按钮方法?你会忘记实施它吗?

打开您的设计模式单击一次要检查的控件,然后打开属性=>事件..如果您的事件已实现,则应该是这样:(即)

(属性) MouseClick (值) Button1_MouseClick

于 2012-05-27T00:57:48.140 回答
0

我通过移动来修复它

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

到 UserSquare 类。我发现 UserSquare 类仅在程序运行而不是更新时获取值。

于 2012-05-27T01:13:32.133 回答