2017-09-19 7 views
0

私がしようとしているのは、空の配列にフォームのテキストボックスを使ってデータを入力することです。フォームには最初の配列が表示されます(値はすでに入力されています)。ただし、テキストボックスに入力した値は受け入れられません。どんな値を入力しても、行全体に$ 0.00が表示されます。それは名前(文字列)を取らない。誰も私を正しい方向に導くことができますか?C#空の配列が入力を受け付けていない

次の2つの問題を抱えてい
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WP_Week3_Part1 
{ 
    public partial class ArrayForm : Form 
    { 
     int[] deptArray = new int[5] { 1, 2, 3, 4, 5 }; 
     double[] contArray = new double[5] { 0, 0, 0, 0, 0}; 
     string[] nameArray = new string[5] { "", "", "", "", "" }; 
     public ArrayForm() 
     { 
      InitializeComponent(); 
     } 

     private void buttonValue_Click(object sender, EventArgs e) 
     { 
      int dept; 
      dept = Convert.ToInt32(textBoxDept.Text); 
      double cont; 
      cont = Convert.ToDouble(textBoxCont.Text); 
      textBoxDept.Text = ""; 
      textBoxCont.Text = ""; 
      textBoxDonor.Text = ""; 
      labelOutput.Text = "Printing Contribution Table \n dept   amount   donor"; 
      for (int i = 0; i < deptArray.Length; i = i + 1) 
      { 
       nameArray[i] = textBoxDonor.Text; 
       labelOutput.Text += String.Format("\n {0}   {1}   {2} ", deptArray[i], contArray[i].ToString("C"), nameArray[i]); 
      } 

     } 
    } 
} 
+0

1配列に割り当てる前に 'textBoxDonor.Text'をクリアします。 2 - あなたは 'contArray'と' deptArray'に何も追加しません。3-ボタンを押すたびに 'nameArray'をすべて上書きします。 – Gusman

+0

buttonValue_ClickのTextBoxから入力を受け取りますか?もしそうなら、.Textプロパティを空の文字列にリセットします。もちろん0になります。 – Inisheer

答えて

1

  1. あなたはcont値を取得し、その後がそれで何もしません。 contArray[i]を印刷しますが、0に初期化された後に割り当てられないため、常に0が出力されます。と仮定されていますが、contを印刷するか、 。

  2. forループで使用する前にドナーテキストボックス(textBoxDoneor.Text = "")をクリアします。したがって、nameArrayという要素を割り当てると、空の文字列が常に割り当てられます。また、配列のすべてのメンバーを常に割り当てていますが、それが意図的なものか、まだあなたのプログラムでまだそれほど得られていないかはわかりません。

+0

1. conを0に初期化していますか? – Bob

+0

したがって、3つのtextBox.Text = ""を設定するとそれらがクリアされますか? – Bob

+0

@Bob contArrayの初期化で0に設定しています。それを ""に設定するとクリアされます。 – BradleyDotNET

1

それはので$0.00返します:あなたは、あなたのテキストtextBoxDonorを設定

を空にし

それは次のようにする必要があります:

  int dept; 
      dept = Convert.ToInt32(textBoxDept.Text); 
      double cont; 
      cont = Convert.ToDouble(textBoxCont.Text); 
      //textBoxDept.Text = ""; 
      //textBoxCont.Text = ""; 
      //textBoxDonor.Text = ""; 
      labelOutput.Text = "Printing Contribution Table \n dept   amount   donor"; 
      for (int i = 0; i < deptArray.Length; i = i + 1) 
      { 
       nameArray[i] = textBoxDonor.Text; 
       labelOutput.Text += String.Format("\n {0}   {1}   {2} ", deptArray[i], contArray[i].ToString("C"), nameArray[i]); 


    } 

右の実行後にnameArrayの内容を確認します

 string arrlist = string.Empty; 
     foreach (var arr in nameArray.ToList()) 
     { 
      arrlist = arrlist +' ' + arr.ToString(); 
     } 
     MessageBox.Show(arrlist); 
+0

誰もが示唆していると思われるものを修正しましたが、入力した値は10.00で、ボブはすべての行を埋めます。 – Bob

+0

あなたの 'nameArray'はあなたの' textBoxDonor'の内容に依存するだけなので、すべての行が絶対に満たされます。私の質問はあなたがそのnameArrayに正確に何をしようとしているのですか? '。 –

+0

空の配列を更新したい – Bob