2016-05-06 14 views
-2
private void button_add_Click(object sender, EventArgs e) 
    { 
     int data = Convert.ToInt32(data_textBox.Text); 

     if (radioButton_2.Checked == true) 
     { 
      for (i = 0; i < Array2d.GetLength(0); i++) 
      { 
       for (j = 0; j < Array2d.GetLength(1); j++) 
       { 
        Array2d[i,j] = data; 
       } 
      } 
     } 
     data_textBox.Clear(); 
    } 

私は値を入力するときに値を入力する必要はありませんが、すべての配列要素を満たす最後に入力した値をコードに入力します。c#ユーザーは2次元配列を入力します

[追加]ボタンをクリックすると、最後に入力した値だけが配列に追加されます。どうすれば修正できますか?

ui

+0

サンプル文字列を入力してください。 –

+0

あなたはここで何をしたいですか?このコードが配列のすべての要素に同じ値を設定していることに気づいていますか?何があなたの目標であるかをよく説明しなければ、あなたの質問は閉鎖の危険にさらされています。何を求めているのかわかりません – Steve

+0

私は配列を入力したいのですが、毎回同じ値ではなく、配列要素 –

答えて

1

それを行うための最善の方法は、ユーザーがスペースとリターンで区切られた複数行のテキストボックス内のすべての値を入力することです。プログラムはテキストを解析して配列を作成します。ここで

はあなたが始めるためにいくつかのサンプルコードです:

public partial class Form1 : Form 
{ 
    int[,] array2d; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.array2d=ParseArray(textBox1.Lines, 4, 4); 
    } 
    public static int[,] ParseArray(string[] lines, int rows, int columns) 
    { 
     // allocate empty array 
     var array=new int[rows, columns]; 
     // for each row of text 
     for (int row=0; row<rows; row++) 
     { 
      // split into values separated by spaces, tabs, commas, or semicolons 
      var items=lines[row].Split(',', ' ', ';', '\t'); 
      // for each value in the row 
      for (int col=0; col<columns; col++) 
      { 
       // parse the string into an integer _safely_ 
       int x=0; 
       int.TryParse(items[col], out x); 
       array[row, col]=x; 
      } 
     } 
     return array; 
    } 
    public static int[,] ParseArray(string text, int rows, int columns) 
    { 
     // split text into lines 
     var lines=text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); 
     return ParseArray(lines, rows, columns); 
    } 
} 
+0

私を助けてくれてありがとう。 –

+0

私はコードのエラーチェックをしていません。ユーザーが予想よりも少ない数字を入力すると、失敗することになります。また、数学を行うために、2d配列の代わりにギザギザの配列( 'int [] []'型)を使用する方が通常より速くて簡単です。 – ja72