Я бы не обошел текстовые поля, вместо этого храню числа в 2-мерном массиве (матрице).Также я бы использовал привязку для автоматической привязки значений матрицы к текстовым полям.Чтобы привязка работала, вам нужен вспомогательный класс, содержащий ваши значения, потому что привязка должна связываться со свойством.
private class Data // Can be a nested private class in Form2.
{
public double Value { get; set; }
public override string ToString() => Value.ToString(); // Not strictly necessary, but
// makes debugging easier.
}
Мы создаем поле _matrix
, а также свойство, преобразующее эту матрицу Data[,]
к матрице double[,]
и ее возврату (в Form2
):
private Data[,] _matrix;
public double[,] Matrix
{
get {
var m = new double[LinhaText, ColunText];
for (int row = 0; row < LinhaText; row++) {
for (int col = 0; col < ColunText; col++) {
m[row, col] = _matrix[row, col].Value;
}
}
return m;
}
}
Теперь создайте текстовые поля и привяжите их к объекту Data
(в Form2_Load
или в конструкторе формы после InitializeComponent
):
_matrix = new Data[LinhaText, ColunText];
for (int row = 0; row < LinhaText; row++) {
for (int col = 0; col < ColunText; col++) {
var newbox = new TextBox {
Width = textboxWidth,
Height = textboxHeight,
Top = (row * (textboxHeight + spacing)) + spacing + vOffset,
Left = (col * (textboxWidth + spacing)) + spacing + hOffset
};
// Create Data object, add it to the matrix and bind it to the TextBox.
var data = new Data();
_matrix[row, col] = data;
newbox.DataBindings.Add(new Binding("Text", data, "Value", true));
Controls.Add(newbox);
}
}
Обратите внимание, что привязка работает в двух направлениях.Если вы инициализируете матрицу числами, они будут отображаться в текстовых полях при открытии формы.Числа, введенные в текстовые поля, будут сохранены в матрице.
Теперь, в другой форме вам нужна ссылка на эту форму.Затем вы можете получить матрицу с помощью
double[,] matrix = frmMartixInput.Matrix;
Если у вас возникнут трудности с передачей ссылок на формы, используйте статическое свойство в статическом классе для матрицы, на которое могут ссылаться все формы.
public static class Globals
{
public static double[,] Matrix { get; set; }
}
Вы также можете передавать данные в форму через параметры конструктора (либо ссылку на другую форму, либо саму матрицу).