For schleife


Briefkasten

Erfahrenes Mitglied
Hallo ich hab ein Problem mit einer for schleife.
Ich poste zuerstmal den Code.

PHP:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace Unterprogramm_2
{
	/// <summary>
	/// Summary description for Form1.
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		public static void ausgabe(int unten, int oben) 
		{
			for(int i = unten; i < oben; i++)
			{
				MessageBox.Show(i + " ");
			}
			}

		private System.Windows.Forms.Button button1;
		private System.Windows.Forms.TextBox textBox1;
		private System.Windows.Forms.TextBox textBox2;
		/// <summary>
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.button1 = new System.Windows.Forms.Button();
			this.textBox1 = new System.Windows.Forms.TextBox();
			this.textBox2 = new System.Windows.Forms.TextBox();
			this.SuspendLayout();
			// 
			// button1
			// 
			this.button1.Location = new System.Drawing.Point(184, 64);
			this.button1.Name = "button1";
			this.button1.Size = new System.Drawing.Size(80, 24);
			this.button1.TabIndex = 0;
			this.button1.Text = "Go";
			this.button1.Click += new System.EventHandler(this.button1_Click);
			// 
			// textBox1
			// 
			this.textBox1.Location = new System.Drawing.Point(128, 64);
			this.textBox1.Name = "textBox1";
			this.textBox1.Size = new System.Drawing.Size(40, 20);
			this.textBox1.TabIndex = 1;
			this.textBox1.Text = "1";
			// 
			// textBox2
			// 
			this.textBox2.Location = new System.Drawing.Point(128, 104);
			this.textBox2.Name = "textBox2";
			this.textBox2.Size = new System.Drawing.Size(40, 20);
			this.textBox2.TabIndex = 2;
			this.textBox2.Text = "5";
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(292, 271);
			this.Controls.AddRange(new System.Windows.Forms.Control[] {
																		  this.textBox2,
																		  this.textBox1,
																		  this.button1});
			this.Name = "Form1";
			this.Text = "Form1";
			this.ResumeLayout(false);

		}
		#endregion

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		private void button1_Click(object sender, System.EventArgs e)
		{
			int unten;
			int oben;

			unten = System.Convert.ToInt32(textBox1.Text);
			oben = System.Convert.ToInt32(textBox1.Text);
			ausgabe(unten,oben);
		}
	}
}

In den Textboxes stehen die Zahlen 1 für unten und 5 für oben drinnen wenn man das Programm startet.

Theoretisch müsste durch das Klicken des buttons Rechnen 3 Textboxes erscheinen. Es passiert aber nichts.

Kann mir jemand sagen warum.
Danke im vor raus.
 

Norbert Eder

Erfahrenes Mitglied
Sollten die Controls nicht schon von vornherein auf der Form erscheinen? Immerhin werden diese ja in der InitializeComponents schon geadded ...
 

erik s.

Erfahrenes Mitglied
Hi, also erstens würde ich sagen, dass 4 MessageBoxes erscheinen müssten.
Zweitens: probier doch mal
Code:
Form1.ausgabe(unten, oben);
. Warum deklarierst du die Methode ausgabe überhaupt als statisch ?

MfG
 

Briefkasten

Erfahrenes Mitglied
Geht leider immer noch nicht.

Auch wenn ich ein Form1.ausgabe(unten, oben); nimm.

ich hab nun statt < folgendes geschrieben:
for(int i = unten; i <= oben; i++)

Jetzt kommt nur eine Textbox. Vorher ist garnichts passiert.
 

erik s.

Erfahrenes Mitglied
Code:
unten = System.Convert.ToInt32(textBox1.Text); 
oben = System.Convert.ToInt32(textBox1.Text);

Fällt dir da was auf ? -- Du liest beide Male den Text aus der textBox1 aus ;)

MfG
 

Alexander Schuc

crazy-weasel
Das meint Erik auch nicht, sondern das du 2 mal den Wert aus textbox1 holst, und somit haben beide Variablen den selben Wert. Das erklärt auch das Verhalten deiner Schleife.

Noch ein paar Tipps:
  • Gib deinen Textboxen (und den anderen Controls) Namen welche einen Sinn ergeben, und lass nicht diese dummen Standardnamen
  • Wenn du Sourcecode pastest, paste nur den relevanten Teil. In deinem Fall jetzt wäre dies die Methode Ausgabe, und button1_Click

MfG,
Alex
 

Forum-Statistiken

Themen
272.355
Beiträge
1.558.613
Mitglieder
187.829
Neuestes Mitglied
AlDi31