按钮不起作用

本文关键字:不起作用 按钮 | 更新日期: 2023-09-27 18:35:30

嗨,我在这里遇到了问题。因此,您可以看到每当单击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; 
    }

按钮不起作用

行:

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

应该是:

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

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

关于IndexOutOfRange Exception 你的问题是你在这里实现你的列表

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

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

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

关于通过错误进行控制..简单而棘手..您可以实现internal/public boolean作为默认false,并根据需要设置为在鼠标事件中true(即鼠标单击事件)。错误方法结束或需要其他位置,设置为返回 false 以准备进行另一个点击事件控制

关于按钮点击不触发其事件(如果我没有误解):您是否删除了一些按钮方法? 你会忘记实现它吗?

打开

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

(属性) 鼠标点击 (值) Button1_MouseClick

我通过移动修复了它

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

到用户广场类。我想出UserSquare类仅在程序运行时获取值,但不更新。