Есть ли способ изменить текст текстовых полей в c # при сохранении ссылок на них в массиве?
Я сталкивался с этой проблемой, когда создавал игру судоку 9x9 в форме вдов на C #, я сохранил 81 текстовое поле в массиве (tb) и затем переместил его в матрицу:
tb[0] = form1.textBox1;
tb[1] = form1.textBox2;
tb[2] = form1.textBox3;
tb[3] = form1.textBox4;
tb[4] = form1.textBox5;
tb[5] = form1.textBox6;
tb[6] = form1.textBox7;
tb[7] = form1.textBox8;
tb[8] = form1.textBox9;
tb[9] = form1.textBox10;
tb[10] = form1.textBox11;
tb[11] = form1.textBox12;
.
.
.
tb[80] = form1.textBox81;
перемещение массива (tb) в матрицу (tbmatrix):
TextBox[,] tbmatrix = new TextBox[9,9];
int c = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
tbmatrix[i, j] = tb[c];
c++;
}
}
Я собираюсь добавить код для добавления случайных подсказок, если кто-то захочет взглянуть:
TextBox[] tb = new TextBox[81];
Dictionary<int,string> col = new Dictionary<int,string>();
Dictionary<int, string> row = new Dictionary<int, string>();
Dictionary<Tuple<int,int>, string> box = new Dictionary<Tuple<int, int>, string>();
Random initial = new Random();
int index;
int jindex;
int val;
int k = 0;
while (k < 20) //20 is the number of clues
{
index = initial.Next(-1, 9); //a random number from 0-8
jindex = initial.Next(-1, 9); //same as above
if (tbmatrix[index,jindex].Text != "")
{
continue;
}
t = new Tuple<int, int>(index/3, jindex/3);
while (true)
{
val = initial.Next(0, 10); //a random number from 1 to 9
if(box[t].IndexOf(val.ToString()) == -1 && col[jindex].IndexOf(val.ToString()) == -1 && row[index].IndexOf(val.ToString()) == -1)
{
break;
}
}
tbmatrix[index, jindex].Text = val.ToString();
tbmatrix[index, jindex].Enabled = false;
k++;
}
теперь вот проблема: последний код не изменяет текстовые поля, он только изменяет ссылки на них ...
единственное решение, с которым я столкнулся, - это переназначить значения оригинальным текстовым полям примерно так:
form1.textBox1 = tb[0];
form1.textBox2 = tb[1];
form1.textBox3 = tb[2];
form1.textBox4 = tb[3];
.
.
.
form1.textBox81 = tb[80]
Так, какая помощь?