0

私がやろうとしているのは、たとえば、5 を渡した場合、matrSizeMatrixNode[11]、.. MatrixNode[12]... (数学の行列のように) という名前の 25 個のテキストボックスを生成する必要があるということです。

ここに画像の説明を入力

テキスト ボックスは行列要素を取得するだけですが、デフォルトでは、テキスト ボックスの作成直後にランダムな値が入力されます。

 public partial class Form2 : Form
    {
        public Form2(int matrSize)
        {
            InitializeComponent();
            int counter=0;
            TextBox[] MatrixNodes = new TextBox[matrSize*matrSize];
            for (int i = 0; i < matrSize; i++)
            {
                for (int j = 0; j < matrSize; j++)
                {
                    var tb = new TextBox();
                    Random r = new Random();
                    int num = r.Next(1, 1000);
                    MatrixNodes[counter] = tb;
                    tb.Name = "Node_" + MatrixNodes[counter];
                    tb.Text = num.ToString();
                    tb.Location = new Point(172, 32 + (i * 28));
                    tb.Visible = true;
                    this.Controls.Add(tb);
                    counter++;
                }
            }
            Debug.Write(counter);
        }

問題は次のとおりです。

  1. 私の関数は、生成されたすべてのフィールドに同じ数を入力します (理由はわかりません)。実際にはランダムでなければなりません
  2. 外観は数学の行列とまったく同じでなければなりません。たとえば、値 5 を渡した場合、5 行 5 列のテキスト ボックスが必要です。しかし、縦に5つのテキストボックスしかありません。

事前にt​​hx。機能を理解するのを手伝ってください

4

3 に答える 3

3
  1. Random各反復の新しいインスタンスを作成していますが、それらは時間的に非常に近いため、値が同じです。外部サイクルの前に1 つのインスタンスを作成し、内部を呼び出すだけです。forNext()

  2. すべてのPointインスタンスの水平位置は同じ 172 であるため、すべての列が重なっています。jのような変数を使用して X を調整する必要がありますPoint(172 + (j * 28), 32 + (i * 28))

于 2013-03-16T09:52:51.070 に答える
0

質問 2 の場合:

テキストボックスの場所を次のように設定しています。

tb.Location = new Point(172, 32 + (i * 28)

X座標(172)を変更しないため、1列しか取得できません。

于 2013-03-16T10:02:41.663 に答える