按钮不起作用
本文关键字:不起作用 按钮 | 更新日期: 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类仅在程序运行时获取值,但不更新。