2016-04-28 11 views
-1

Meine Anweisungen sind: "Erstellen Sie ein Formular, das eine laufende Summe von Zahlen anzeigt, die ein Benutzer eingibt." - Dazu habe ich ein Formular mit zwei Textfeldern erstellt (eins für die Anzahl der Werte im Array und das andere für die Werte im Array), eine Schaltfläche, um es anzuzeigen, und eine Bezeichnung, damit alles angezeigt wird es. Das Problem ist, dass meine Werte überhaupt nicht auftauchen. Mein Code ist wie folgt:Microsoft Visual Studio-Arrays zur Laufzeit

(** HINWEIS:. Ich versuche, das Array zu bekommen in meinem Label angezeigt TxtInput ist die eingegebenen Werte und txtArrayValues ​​ist die Anzahl der Elemente.)

namespace Running_Total 
{ 
    public partial class frmEnter : Form 
    { 
     public frmEnter() 
    { 
     InitializeComponent(); 
    } 

    private void btnDisplay_Click(object sender, EventArgs e) 
    { 
     int intNumber = Convert.ToInt32(txtArrayValues.Text); 

     string[] strArray; 
     strArray = new string[intNumber]; 

     int i; 
     string j = ""; 

     for (i = 0; i < intNumber; i++) 
     { 
      j = Convert.ToString(txtInput.Text); 
      strArray[i] += j; 
     } 

     lblDisplay.Text = strArray + " "; 
    } 
} 

}

Vor, wenn ich lblDisplay.Text += j + " "; setzen würde, erschien es in der Bezeichnung, aber beachtete nicht die Menge der Elemente, die der Code haben sollte. (Bearbeiten: Dies funktioniert nicht mehr in meinem Code.) (Wie im Titel angegeben, arbeite ich mit C# über Microsoft Visual Studio.)

+0

By the way, in der for-Schleife können Sie instanziiert i on the fly wie diese 'for (int i = 0; i

+0

ok, was in "txtInput.text" war? Sie müssen es nicht in eine Zeichenfolge konvertieren, es ist eine Zeichenfolge. Sagen wir, du schreibst in txtinput "frog" .. dein Label von j + "" j wird frog sagen, also wird dein Display "frog" sein ... du hast den gleichen Namen in jedes deiner Array-Objekte kopiert, aber es ist nur lebendig Während dieser Schaltfläche klicken, also, nachdem der Button beendet ist, ist Ihr Array weg, und alles, was Sie dafür zeigen müssen, ist der Kontext eines Eingabefeldes + ein Leerzeichen in Ihrem Etikett - der Code tut genau das, was Sie gefragt haben – BugFinder

+0

@BugFinder Ich habe numerische Werte für die Elemente eingegeben, wie die Zahl 5, die konvertiert wurde, als ich das Array im doppelten Datentyp hatte (ich habe das aus meinem Code gelöscht, nachdem Sie es mir zur Kenntnis gebracht hatten). Wie bekomme ich dann das Array im Label angezeigt? – Naima

Antwort

0

Es hängt stark von der Art und Weise, wie der Benutzer die Zahlen eingibt.

1) Wenn er die Textbox einmal mit Zahlen füllt und dann die Taste drückt, um sie in der anderen Box anzuzeigen, würde es ausreichen, ein String-Array zu verwenden, um die Eingabe einzufügen und sie der Textbox oder Beschriftung hinzuzufügen. Wenn er die Zahlen in das Eingabefeld ein und Typen neue löscht könnten Sie einfach diesen Schritt wiederholen

namespace Running_Total 
{ 
    public partial class frmEnter : Form 
    { 
     // declare your Array here 
     string [] array = new string[1000]; 
     int count = 0; 

     public frmEnter() 
     { 
      InitializeComponent(); 
     } 

     private void btnDisplay_Click(object sender, EventArgs e) 
     { 
      // save input 
      array[count] = inputTextBox.Text; 
      count++; 

      // display whole input 
      string output = ""; 
      for(int i = 0;i < count; i++) 
      { 
       output += array[i];      
      } 
      // write it the texbox 
      outputTextBox.Text = output; 

     } 
} 

Macht das Ihre Frage beantworten oder haben Sie eine andere Eingabemuster im Sinn?

+0

Es beantwortet meine Frage, ja - vielen Dank! – Naima

0

Mit Blick auf Ihren Code, erkannte ich, dass Sie die gleiche Zahl in TxtInput Text wiederholt so oft wie eine Zahl in einem TxtArrayValues.Text eingegeben anzeigen möchten. Zum Beispiel txtArrayValues. Text = "5" und txtInput.Text = "2", Ihr Code liefert das Ergebnis "2,2,2,2,2". Wenn das das ist, was Sie wollen, dann wird der folgende Code das erreichen.

using System.Linq; 
    namespace Running_Total 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 

      private void btnDisplay_Click(object sender, EventArgs e) 
      { 
       int len, num; 
       if (int.TryParse(txtArrayValues.Text, out len) && 
int.TryParse(txtInput.Text, out num)) 
       { 
        lblDisplay.Text = string.Join(",", new string[len].Select(x => txtInput.Text)); 
       } 
      } 
     } 
    }