我制作了一个小型数据库程序,并且在尝试初始化过去[currentIndexPlayer,2]之前我遇到了错误System.IndexOutOfRangeException,之后一切正常。我怎么可能在阵列中用完了空间?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string[,] playerArray = new string[19, 7]; // Initial player array is declared, this is where the players are stored//
int currentIndexPlayer = 0;
private void addNewPlayerBtn_Click(object sender, EventArgs e)
{
if (addNewPlayerBtn.Text == "Add New Player")
{
playerFirstNameBox.ReadOnly = false; //Unlock all fields for input//
playerIgNameBox.ReadOnly = false;
playerSecondNameBox.ReadOnly = false;
contactStreetBox.ReadOnly = false;
contactTownBox.ReadOnly = false;
contactPostcodeBox.ReadOnly = false;
contactEmailBox.ReadOnly = false;
contactTelephoneBox.ReadOnly = false;
addNewPlayerBtn.Text = "Confirm";
}
else if (addNewPlayerBtn.Text == "Confirm")
{
if ((playerFirstNameBox.Text != "") && (playerIgNameBox.Text != "") && (playerSecondNameBox.Text != "")) // Validation check to see if all main fields were entered
{
playerArray[currentIndexPlayer, 0] = playerFirstNameBox.Text;
playerArray[currentIndexPlayer, 1] = playerIgNameBox.Text;
playerArray[currentIndexPlayer, 2] = playerSecondNameBox.Text;
playerArray[currentIndexPlayer, 3] = contactStreetBox.Text;
playerArray[currentIndexPlayer, 4] = contactTownBox.Text;
playerArray[currentIndexPlayer, 5] = contactPostcodeBox.Text;
playerArray[currentIndexPlayer, 6] = contactEmailBox.Text;
playerArray[currentIndexPlayer, 7] = contactTelephoneBox.Text;
currentIndexPlayer++;
}
else
{
MessageBox.Show("Missing fields","Problem With Input", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); //Validation failed, display error message//
addNewPlayerBtn.Text = "Confirm";
}
addNewPlayerBtn.Text = "Add New Player";
playerFirstNameBox.ReadOnly = true; //lock all fields for input again//
playerIgNameBox.ReadOnly = true;
playerSecondNameBox.ReadOnly = true;
contactStreetBox.ReadOnly = true;
contactTownBox.ReadOnly = true;
contactPostcodeBox.ReadOnly = true;
contactEmailBox.ReadOnly = true;
contactTelephoneBox.ReadOnly = true;
}
}
private void searchToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 searchForm = new Form2();
searchForm.Show();
}
}
}
答案 0 :(得分:3)
数组索引基于零。在此行中,您尝试设置第七个元素,但最后一个是6
playerArray[currentIndexPlayer, 7] = contactTelephoneBox.Text;
此外,您需要确保currentIndexPlayer
等于或小于第一维尺寸的18
。
答案 1 :(得分:1)
可能是你的阵列:
string[,] playerArray = new string[19, 7];
在第二个维度中创建七个空格,稍后尝试分配到第八个空格:
playerArray[currentIndexPlayer, 7] = contactTelephoneBox.Text;
尝试将初始化中的七个更改为八并查看是否有效。
答案 2 :(得分:0)
您需要检查currentIndexPlayer< 19之前:playerArray [currentIndexPlayer,0]。