嗨,我在这里遇到了问题。因此,无论何时单击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; }
答案 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类只在程序运行但不更新时获取值。