Ankündigung

Einklappen
Keine Ankündigung bisher.

visual c#

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • visual c#

    Halloo,

    Ich habe vor kurzem angefangen mir c# anzugucken und ich stehe vor einem wahrscheinlich kleinem problem...

    Ich arbeite mit dem Microsoft Visual Studio 2005 und benutze wie schon erwähnt c#.

    Ich habe eine form, auf der eine richTextBox ist und eine weitere Klasse, die dazu zuständig ist auf clients zu warten, die versuchen auf das Programm(den Server) zu connecten.

    Jedes mal, wenn jemand connected soll eine nachicht in der textbox erscheinen... soviel dazu.

    Mein Problem ist (da ich noch nie wirklich mit graphischen oberflächen gearbeitet habe): wie kann ich von der einen Klasse der form mitteilen, dass da grad jemand connected hat?

    Steckt wahrscheinlich nich viel hinter, aber für mich ist es ein großeres Problem, würd mich über ne kleine antwort freun ^^

    mfg

  • #2
    Das ist tatsächlich sehr einfach. Eine RichTextBox bietet im Gegensatz zu der normalen TextBox zusätzliche Funktionalität, aber die meisten Eigenschaften sind dieselben. Das heißt du kannst Text einfach über das Property Text ausgeben. Beispiel:

    Code:
    this.richTextBox1.Text = "Client connected";
    In dem Fall wird bei der richTextBox1 der Text Client connected ausgegeben. Wenn du ur aktuellen Ausgabe deinen Text hinzuhängen möchtest geht das einfach mit:

    Code:
    this.richTextBox1.Text += "Client connected";

    Kommentar


    • #3
      naja, das ist auch nich wirklich das problem, auf einer richTextBox nen text auszugeben, mein problem ist, wenn eine andere Klasse, also nicht die form auf clients wartet. Wenn dann einer connectet becommt die form davon ja nix mit... aber sie soll dann da den text ausgeben... =/

      Kommentar


      • #4
        Zitat von unwissender Beitrag anzeigen
        naja, das ist auch nich wirklich das problem, auf einer richTextBox nen text auszugeben, mein problem ist, wenn eine andere Klasse, also nicht die form auf clients wartet. Wenn dann einer connectet becommt die form davon ja nix mit... aber sie soll dann da den text ausgeben... =/
        Achso . Eine Form ist doch nichts anderes wie eine Klasse. Und für eine Klasse gelten Regeln. Eine Regel ist die Kapselung. Alle Objekte werden verborgen. Du hast die Möglichkeit deine RichTextBox an die Klasse zu übergeben. Das kann über den Constructor der Klasse passieren. Oder aber du leitest die Klasse ab. Du kannst alles damit machen was du auch mit einer normalen Klasse machen könntest. Auch Getter Setter Methoden sind möglich.

        Kommentar


        • #5
          Hallo unwissender,

          wie Stefan schon gesagt hat. Eine Form ist in C# selbst auch eine Klasse. Wenn du die Controls deiner Form aus einer anderen Klasse heraus verwenden oder ansteuern möchtest, musst du das Prinzip der OOP beachten. Hier eine Möglichkeit die sich konkret auf dein Problem bezieht:

          Code:
          // Das ist die Klasse die von Visual Studio automatisch erzeugt wird und deine Form startet.
          static class Program
          {
              /// <summary>
              /// The main entry point for the application.
              /// </summary>
              [STAThread]
              static void Main()
              {
                  Application.EnableVisualStyles();
                  Application.SetCompatibleTextRenderingDefault(false);
          
                  // Erstelle selbst ein Form1 Objekt
                  Form1 form = new Form1();
          
                  // Hier übergibst du das form Objekt an deine Klasse!
                  MyClass mClass = new MyClass(form);
                  Application.Run(form);           
              }
          }
          Code:
          // Das ist eine Get-Set Methode für deine RichTextBox in deiner Form1.cs
          public string RText
          {
              get
              {
                  return this.richTextBox1.Text;
              }
          
              set
              {
                  this.richTextBox1.Text = value;
              }
          }
          Code:
          // Das ist deine andere Klasse die mit den CLients arbeitet
          class MyClass
          {
              private Form1 fObj;
          
              public MyClass(Form1 o)
              {
                  fObj = o;
                  connect()
              }
          
              public void connect()
              {
                  fObj.RText = "Client connected";  
              }
          }
          Über die Eigenschaften kannst du von einer anderen Klasse auf deine RichtextBox zugreifen ohne die Regeln der OOP zu verletzen. :byebye:

          cu

          Kommentar

          Lädt...
          X