2016-11-05 4 views
0

プログラミングに慣れていないのでリストボックスを削除してもらえません。何が起こるかは、ユーザーが値を入力できることです。これは配列に格納され、リストボックスに追加されます。ユーザはいつでもアレイ/リストボックスの両方をクリアすることができます。しかし、値を入力した後など。 123、リストボックスに表示されている場合は、クリアボタンを使用します。次にもう一度別の値を入力します。 555、lisboxの最初の数字が555ではなく、0,155です。もう一度クリアすると、別の番号を追加します。 1123、output is:0、0、1123など。私は前の要素だけをクリアして、次のインデックスに番号を配置しているようです。最初のインデックスに数値を追加し、0000 ... Nをリストボックスに表示しないように、配列/リストボックスを空にするにはどうしたらいいですか?クリアにリストボックス内でC#配列がクリアされない

ボタン:

private void btnClear_Click(object sender, EventArgs e) 
    { 

     Array.Clear(numArray, 0, numArray.Length); 
     lstHoldValue.Items.Clear(); 

    } 
+0

このwinformはありますか? – Rahul

+0

ええ、そのwinform – nothing

答えて

0

問題がクリックされたときに明確にあなたが0にインデックス値をリセットしていないことかもしれません。私は、numArrayをクリアするコードでは、値を0に設定するか、別の配列を作成していると思いますが、インデックスを覚えておくには、それをクリアする前の状態にしてください。そうでない場合は、決済コードを掲載してください。

私はあなたのクリアコードを見ましたが、それはまさにその理由です。これをあなたの明確なコードに追加してください:

this.index = 0; 
+0

はい、それは動作します!あなたはスターです! – nothing

+0

問題が解決したら回答を受け入れてください。方法と理由についてこのスレッドを読む:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – CodingYoshi

+0

ありがとう、その完了:) – nothing

0

の代わりに、ベストを再することです

lstHoldValue.Items.Insert(0, numArray[i]); 

のように特定のインデックスに項目を挿入するInsert(Int32, Object)メソッドを使用することができますAdd()方法を使用して新しい配列の内容でリストボックスをバインドする

lstHoldValue.DataSource = numArray; 
0

Array.Clearメソッドは、値をデフォルト値(整数の場合は0)にリセットするだけです。

配列をクリアする簡単な方法は、それを再初期化することであるすなわちnumArray = new int[10]

出典:https://msdn.microsoft.com/en-us/library/system.array.clear(v=vs.110).aspx

+0

私はnumArray = new int [10]でArray.clearを置き換えようとしましたが、まだそれらの0が表示されます。 – nothing

+0

再初期化の後、Rahulの答えのように配列をリストボックスに再バインドしますか? –

+0

再バインドを使用しようとすると "System.ArgumentException"エラーが発生する – nothing

関連する問題