C# Form ... Button Location wie..?



  • Hallo an alle,
    bin noch neu in der C# programmierung..!
    Hoffe bin im richtigen Forum.

    Habe eine Form erstellt in Visual C#. Während man auf eine Button drückt, soll sich das Fenster/Form verändern und zwar soll da ein neur button entstehen.
    Folgender Code:

    private void button1_Click(object sender, EventArgs e)
            {
                Button btn = new Button();
                splitContainer1.Panel2.Controls.Add(btn);
                // btn.Location.X = 50;
                // btn.Location.Y = 40;
    
              }
    

    Wie kann ich denn die Location des Buttons festlegen..?
    So wie ich das versuche mit

    btn.Location='wert';
    

    geht es nicht.

    Hätte noch ne andere Frage:
    Wie kann ich das mit Visual C# machen, dass ich z.B. ein Fenster hab, dass durch ein splitContainer in zwei bereiche getrennt ist. Im ersten Bereich soll ein Art Menü sein, der andere Bereich soll sich immer verändern, wenn man z.B. ein Button vom Menü drückt. Kann ich das irgendwie machen, dass z.B. beim Drücken eines Buttons ich immer wieder den zweiten Bereich grafisch erstellen kann also mit dem form-designer....und nicht mit Code...?

    Hoffe ihr versteht was ich meine.
    Sry wenn die Frage dumm ist, bin noch anfänger (wie gesagt)..!

    Danke schon im vraus für eure Antworten..!
    MFG Bonafide..!



  • weiss ich ausn kopf grad nicht, aber probiers mal mit

    btn.Location = new Location(50, 50);
    

    // am sonsten, schau einfach mal in die resx datei wie die form selber vom VS erstellt wurde, da wird die location ja auch irgendwo definiert {o;



  • Danke für die schnelle Antwort Mr Evil..!

    Mr Evil schrieb:

    weiss ich ausn kopf grad nicht, aber probiers mal mit

    btn.Location = new Location(50, 50);
    

    // am sonsten, schau einfach mal in die resx datei wie die form selber vom VS erstellt wurde, da wird die location ja auch irgendwo definiert {o;

    Nee so geht es auch nicht. Da kommt ne Fehlermeldung:
    Fehler 1 "System.Windows.Forms.Form.Location" ist ein(e) "Eigenschaft", wird aber wie ein(e) "Typ" verwendet.

    Und meinst du Form1.resx..?
    Weil da steht nix von Location..!



  • Einfach mal in der MSDN unter Location schauen.

    btn.Location = new Point(50,50);
    


  • button1.Location = new System.Drawing.Point(e.X, e.Y);
    

    war jemand schneller 😉



  • LordJaxom schrieb:

    Einfach mal in der MSDN unter Location schauen.

    btn.Location = new Point(50,50);
    

    Danke, hat geklappt..!

    Habe ja auch versucht die Hilfe anzuwenden, aber bei mir funkt. die Hilfe nicht, ka wieso.

    Könntest du mir vielleicht auch meine zweite Frage beantworten (wenn es geht 😕 ), also wie man es allgemein erstellen sollte, wenn man es so wie oben gesagt machen will...?

    Hier wieder meine andere Frage:

    Bonafide schrieb:

    Wie kann ich das mit Visual C# machen, dass ich z.B. ein Fenster hab, dass durch ein splitContainer in zwei bereiche getrennt ist. Im ersten Bereich soll ein Art Menü sein, der andere Bereich soll sich immer verändern, wenn man z.B. ein Button vom Menü drückt. Kann ich das irgendwie machen, dass z.B. beim Drücken eines Buttons ich immer wieder den zweiten Bereich grafisch erstellen kann also mit dem form-designer....und nicht mit Code...?

    Also im Klartext, dass was ich grad z.B. mit dem Button machen will, also neuer Button hinzufügen, location usw....alles irgendwie grafisch machen, so wie man das erste Fenster bearbeitet.



  • Du kannst dir für jeden bereich eine form anlegen und diese dann immer in ein panel laden das du in deinen Splittcontainer reintust .. ka ob es auch direkt mit dem splitcontainer geht

    edit:: da ich gerade nicht an meinem normalen arbeitsplazt sitze kann ich dir kein beispiel geben. Aber du kannst dir dieses Starterkit von MS anschauen das beim VS dabei ist .. diese VideoDatenbank oder was das noch gleich ist.. die machen das dort auch so



  • Danker erstmal für deine Antwort.
    Habe MS Visual C# Express Edition, weiss nicht ob sowas dabei ist und wenn ja, wo..?
    Wie man ein neue Form öffnet, weiss ich ja, aer dieses Laden ist das Prob.
    Habe auch gegoogelt und bis jetzt nix braubares gefunden.



  • google mal nach unterformularen oder sowas ..

    panel.Controls.Add(frm);
    

    EDIT:

    machs so: (hab ich gerade aus ner anwendung von mir rausgefrimelt allerdings VB.net was anderes ist jetzt nicht hier kannst dir ja übersetzen lassen bzw. die .net funktionen rauspicken)

    Dim m_Form1 As Form1
    
    Friend ReadOnly Property Form1() As Form1
            Get
                'Variable mit neuer Objektinstanz initialisieren, wenn nichts vorhanden ist
                If Me.m_Form1 Is Nothing Then
                    'Objekt wird erstellt
                    Me.m_Form1 = New Form1
    
                    'Fill-Steuerelement auf dem Host-Benutzersteuerelement platzieren und andocken
                    Me.pnlControls.Controls.Add(Me.m_Form1)
                    Me.m_Form1.Dock = DockStyle.Fill
                End If
    
                Return Me.m_Form1
            End Get
        End Property
    
       Friend Sub showForm1()
            'Leistungsoptimierung - Ausblenden dieses Steuerelements Überspringen, wenn es noch nicht erstellt wurde
            If Me.Form2 IsNot Nothing Then
                Me.Form2.Visible = False
            End If
            'Dieses Steuerelement anzeigen und alle anderen ausblenden
            Me.Form1().Visible = True
        End Sub
    


  • Ok habe meine 2. Form so gemacht wie du meintest, also ohne sschliessen, max und min und ohne rand.(FormBorderStyle=none) und AutoSize auf true...ka ob das was bringt.
    Mit dem Befehel den du meintest funktioniert es zwar, also es startet schon ohne fehlermeldung, aber sobald ich auf den entsprechenden Button drücke, stürzt es ab und zeigt folgendes an:
    Das Steuerelement der obersten Ebene kann nicht zu einem Steuerelement hinzugefügt werden.
    Also die Fehler meldung auf die Zeile ...Controls.Add(frm);

    Da ich eigentlich gar keine VB-Kentnisse habe, habe ich versucht den Code mal zu verstehen. Bis jetzt habe ich verstanden, dass er am an anfang ne form erstellt wird, mit dem Befehl den du meintest geaddet wird, aber die nächste Zeile kann ich nicht so übersetzten, also die:

    Me.m_Form1.Dock = DockStyle.Fill
    

    weil ne Form keine Eigenschaft namens Dock hat (also ich habe keine gefunden), dagegen hat ein button und ein panel diese Eigenschaft.

    Wo ist eigentlich das prob..?
    Muss das fenster was im Panel geladen wird genau die grösse haben, die auch der panel hat, oder wieso ist es so kompliziert..?
    (Weil ne zweite form einfach öffnnen durch ein button-klick sit dagegen richtigleicht..!)
    DANKE, dass du dir soviel Zeit nimmst..!



  • http://msdn.microsoft.com/de-de/vcsharp/aa336742.aspx

    lad dir das Amazonfähige Filme sammlung ding mal runter ... da ist das dann für C# drin!

    und hier kannst du dir quelltext übersetzen lassen:
    http://www.developerfusion.com/tools/convert/vb-to-csharp/

    geht nicht immer alles zu 100% aber is gut 😉

    EDIT::// Hab selbst nochmal geschaut die machen das auch mit .Dock
    hast du auch das Me durch This ersetzt und vorher die form angelegt??



  • Es hat funktioniert, habe ein Benutzersteurelement zum Projekt hinzugefügt und mit folgendem Code ging es:

    UserControl1 oform = new UserControl1();
    splitContainer1.Panel2.Controls.Add(oform);
    

    DANKE dir PRIEST für deine Hilfe und vorallem deine Geduld..!

    !..MFG Bonafide..!


Anmelden zum Antworten