2011-05-14 28 views
1

私は次のプログラムを持っています。ユーザーがbtnOKをクリックすると、4つのテキストボックスから文字列を取り出し、配列に入れ、メッセージを表示します。私はbtnClearと呼ばれるボタンを持っています。クリックするとメッセージ文字列と配列の両方をクリアする必要がありますが、それをやっていないので、どうして誰かが見て助言することができません。配列と文字列を消去することができません

string[,] namesTable = new string[10, 4]; 
int row = 0; 
string message = ""; 

private void btnOK_Click_1(object sender, EventArgs e) 
{ 

    namesTable[row, 0] = txtFirstName.Text; 
    namesTable[row, 1] = txtSurname.Text; 
    namesTable[row, 2] = txtPosition.Text; 
    namesTable[row, 3] = txtComment.Text; 
    row++; 

    message = "Name.\tSurname\tPosition\tComment\n"; 
    for (int i = 0; i < namesTable.GetLength(0); i++) 
    { 
    if (namesTable[i, 0] != null) 
    { 
     for (int j = 0; j < namesTable.GetLength(1); j++) 
     { 
     message += namesTable[i, j] + "\t"; 
     } 
     message += "\n"; 
    } 
    } 

    MessageBox.Show(message, "Names Table"); 
} 

private void btnClear_Click_1(object sender, EventArgs e) 
{ 
    Array.Clear(namesTable, 0, 4); 
    message = ""; 
} 

詳細が必要な場合はお知らせください。

答えて

1

クリア要素の範囲は、使用すべきである 従って多次元アレイ内の行に行からラップ:

Array.Clear(namesTable, 0, 40); 
//     ^^ 
//      | |_The number of elements to clear. 
//      | 
//      |____The starting index of the range of elements to clear. 
+0

@fadjadなぜ4に設定したら、1)4つの値を入力してOKをクリックするか2)もう一度OKをクリックする3)Clearをクリックする4)もう一度OKをクリックするメッセージボックスには2番目と3番目? –

+0

あなたのコードで 'Array.Clear(namesTable、0、4);'は 'namesTable [0、4]'を通して 'namesTable [0、1]'を0に設定するだけです。 – fardjad

+0

ありがとうございます。 –

0

インデックスの0から4つの値をクリアしますが、挿入コードはrowのインデックスに挿入されます。これはあなたの問題になりそうです。 rowの値は何ですか?

単に行い、アレイ内everytingをクリアする:

namesTable = new string[10, 4]; 
row = 0; 
+0

行は自動的に計算されます - inc新しい「行」のデータが作成されたときに再評価する –

+0

すべての行を再初期化するか、現在の行のみを再初期化しますか?どのような状況下でも、アレイの正しい部分をクリアしたいことがあります。 'new'だけすべてをクリアして新しい配列を作成し、' row'を0にする必要がある場合。 – driis

+0

"new a new array"とは、既存のものを削除することですか? –

0

すべてのデータを消去したい場合は、すべてを再初期化してください。

private void btnClear_Click_1(object sender, EventArgs e) 
{ 
    this.namesTable = new string[10, 4]; 
    this.row = 0; 
    this.message = ""; 
} 
関連する問題