[C#] While - Abfrage

Hawkings

Erfahrenes Mitglied
Sers@all...

Ich habe ein Problem und bitte um Hilfe, und zwar habe ich in meinem Programm ein 2. Formular in dem der Benutzer das Passwort und Benutzernamen sowie Domäne eingeben muss, bzw. 2 der Daten sind bereits durch das PRogramm herausgefunden.
Ich möchte jetzt, dass das Programm solange wartet, bis alle Eingaben gemacht sind und dann erst fortfährt...aktuell ist es leider so, dass es mein Formular aufruft und er einfach weitermacht, obwohl gerade form2 aktiv ist...
hier ein ausschnitt meines quellcodes

C#:
   Form2 f2 = new Form2();
            f2.Show();
            string lPW = f2.pw;
            string lUID = f2.uid;
            string lDomain = f2.domain;
            
            while (((lPW != "")&&(lDomain != ""))&&(lUID != "")))              
            {
                label1.Text = lPW + " " + lUID;
                ....

Danke schonmal im vorraus und liebe Grüße...
 
Zuletzt bearbeitet von einem Moderator:
Hallo

schreib leg dir in der Form die auf die Eingabe wartet einen Delegaten und ein Event an.
Dieses Event initialisierst du dann in der anderen Form und wenn dann die Eingabe gemacht wurde kannst du dieses Event auslösen.

mfg
wensi
 
oha...;)

kannst du mir ein beispiel hierfür geben?!^^
das was du gesagt hast, ist sicherlich richtig und toll, ich kann jetzt mit delegaten jedoch nicht viel anfangen...
Was ist ein delegat?! Und was für ein Event soll ich dort angeben?! Modifier?!

Gruß, Hawkin
 
Hallo,

using System;

///Ausserhalb der Klasse den Delegaten deklarieren
public delegate void DerDelegat();

public class TestKlasse
{
///das event anlegen auf das dann reagiert werden soll
public event Methode DasEvent;

public void Ausloesen()
{
//Auslösen des Events
if (DasEvent!= null)
DasEvent();
}
}
public class HauptKlasse
{
private static void Ausgabe()
{
Console.WriteLine("Diese Methode wird aufgerufen, sobald das Event ausgelöst wird.");
}

public static void Main()
{
TestKlasse test= new TestKlasse();

///Das Event initialisieren und mittels des Delegaten die entsprechende Handlermethode
///festlegen die beim Auslösen des Events aufgerufen werden soll
test.DasEvent += new DerDelegat(Ausgabe);
test.Ausloesen();
}
}


Du kannst dir Events selber schreiben und dann auch selber benutzen. Für Events benötigst du dann einen Delegaten der dann die entsprechende Handlermethode für das Event aufruft. Der Delegate bestimmt welchen Rückgabewert und welche Parameter die Handlermethode besitzt.
 
Zuletzt bearbeitet:
Sorry,
ich hab zu schnell abgeschickt

Auf dein Problem müsste es so Funktionieren, dass du dir in dem Dialog der für die Passworteingabe ist einen Delegaten und ein zugeföriges Event deklarierst.
Nachdem du dann den Dialog erzeugst, initialisierst du dir dann dieses Event und schreibst dir eine Entsprechende Handlermethode dafür.
Im dialog fragst du dann wenn es soweit ist ab, ob dieses Event initialisiert wurde und löst dann das Event aus.

mfg
wensi
 
so...wirklich verstanden habe ich es noch nicht...aber ich versuchs mal...
ich mache das ejtzt mit beispielen aus meinem Code:

zunächst einmal wird aus Form1 die 2. From aufgerufen





C#:
Form2 f2 = new Form2();
f2.Show();

Nun öffnet sich die 2. Form und ich kann dort die Sachen eingeben, die 2. Form sieht vom Quelltext folgendermaßen aus mit dem Versuch, deine Idee einzubinden...


C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;

namespace Distributor_Tool
{
public delegate void DerDelegat();       //Für was steht hier der Delegat, steht da Delegat oder sowas wie Modifier?!

    public partial class Form2 : Form
    {
        public string pw;
        public string uid;
        public string domain;
        public Form2()
        {
            InitializeComponent();
            textBox_uid.TextAlign = HorizontalAlignment.Center;
            textBox_pw.TextAlign = HorizontalAlignment.Center;
            textBox_pw.PasswordChar = '*';

            System.Security.Principal.WindowsIdentity wi = System.Security.Principal.WindowsIdentity.GetCurrent();
            System.Net.NetworkInformation.IPGlobalProperties gip = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties();   
            
            pw = "";
            uid = "";
            domain = "";
            textBox_uid.Text =  wi.Name;
            textBox_domain.Text = gip.DomainName;

        }
        
        public event Methode DasEvent;     //Oder hier Modifier oder sonstwas?!
//BZW. was für ein EVENT benötige ich, damit der reagiert, wenn die Eingaben gemacht //sind?!

        public void Ausloesen()
{
If (DasEvent() != null)
{
DasEvent();
}
}  

        

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button_Ok_Click(object sender, EventArgs e)
        {

            uid = textBox_uid.Text;
            pw = textBox_pw.Text;
            domain = textBox_domain.Text;
            Close();
        }



Ich raffs nicht mehr....
Gar nicht mehr!
 
Zuletzt bearbeitet von einem Moderator:
Zuallererst warum kompliziert wenns auch leicht geht?

Schritt1: Du öffnest aus Form1, die Form2 mittels ShowDialog() - Somit kannst du erstmal nichts in der Form1 machen
Schritt2: Du prüfst in den einzelnen Textbox_TextChanged-Events ob etwas in den Textboxen drin steht, wenn ja aktiviere z.B. den Button "Login"
Schritt3: Du übergibst deine "Daten" als Getter/Setter deiner Form1, da Form1 solange pausiert, bekommt er die Daten ohne vorher etwas gemacht zu haben, nicht wie in deinem jetzigen Fall

Form2 Getter/Setter:
Code:
private string uid;
public string UserID
{
     get
     {
          return uid;
     }
     set
     {
          uid = value;
     }
}

Das machst du auch für deine anderen zwei Variablen. Und nun kannst du in Form1 über f2.UserID an deine Daten kommen.
 
Puh, hossa...Jetzt geht es =)

Danke dir, dass war es, einfach und effizient, und es läääuft :-D

Auch danke dir wensi, dass du dich damit befasst hast, aber mein wissen ist noch nicht so weit fortgeschritten und kenne teilweise solche Fachausdrücke noch nicht....

Gruß aus Bruchsal,

ein :) Hawkin
 
Zurück