Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Button.Text aktualisiert im GUI nicht
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

Button.Text aktualisiert im GUI nicht

beantworten | zitieren | melden

Hallo,
da ich schon gegooglet und rumprobiert habe wie sonstwas stelle ich nun mal hier meine Frage, in der Hoffnung, dass ihr mir helfen könnt. :)

Info vorab: Die Methode läuft komplett durch, das habe ich schon mit einem "console.write" ausprobiert.

Problem: Die Methode soll einen Text in den Buttontext hineinschreiben. Ich habe mir das schon in die Console schreiben lassen und dadurch festgestellt, dass der Button.Text geändert, nur die Änderung grafisch also im GUI nicht dargestellt wird. Hier mal mein Code.


Teil der Form mit der Methode, die den Button ändert:

public void buttonSetup(string button, string name, string path)
        {
            button1.Text = name;
            button1.Name = path;   
        }

Teil der Form mit dem Button, der die Methode auslöst:

private void button2_Click(object sender, EventArgs e)
        {
            aumed.buttonSetup(bname, dname, dpath);
            this.Close();
        }

Hoffe ihr könnt mir helfen..

Gruß Mo
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

klingt alles ganz i.o., nur stutzig macht mich das this.Close();.

evtl. wird da ein anderer Button um-beschriftet, aber das siehst du nicht, weils Form schon closed ist.

lass doch mal das this.Close weg, und guck, ob sich iwas verdächtiges zeigt.
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Ne, es ändert sich nichts. Das "this.close()" ist auch eigentlich nur dafür da, meine Auswählen-Form zu schließen.
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

ok, aber ganz generell kanns ja eiglich nicht anders sein, als das du den falschen Button um-beschriftest.

ob du nun ein Form geladen hast, aber nciht angezeigt oder was auch immer.

oder der button ist aus sonst einem Grund nicht sichtbar.

oder button1 ist überhaupt kein button.

mach dich drauf gefasst: es wird iwas dummes sein. ;)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Ich glaub langsam ich bin echt zu blöd... button1 ist als Button definiert und existiert definitiv. Außerdem ändert er ja auch Text und Name(egal bei welchem Button ich es probiere), es wird halt nur nicht angezeigt.
private Nachricht | Beiträge des Benutzers
TheBrainiac
myCSharp.de - Member

Avatar #avatar-3152.png


Dabei seit:
Beiträge: 832
Herkunft: /dev/null

beantworten | zitieren | melden

Hast du den Button korrekt zu irgendeinem Control hinzugefügt? d.h. siehst du den button?
There are 10 types of people in the world:
Those, who think they understand the binary system
Those who don't even have heard about it
And those who understand "Every base is base 10"
private Nachricht | Beiträge des Benutzers
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

Jup, ich hab den in 'nem Flowlayoutpanel und sehe den auch, sowie die anderen 35 Buttons.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dmnjkr am .
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Klingt für mich nach so etwas hier:


void Example(Button button)
{
    button = new Button();
    button.Name = "Beispiel";
}

Falls ich richtig liege, solltest du dir Parameterübergabe by reference und by value mal anschauen (ich meine nicht das Schlüsselwort ref).

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5963
Herkunft: Leipzig

beantworten | zitieren | melden

Hi dmnjkr,
Zitat von dmnjkr

aumed.buttonSetup(bname, dname, dpath);

Interessant wäre hier vor allen, welche Werte die Variablen bname, dname, dpath bzw. (in der buttonSetup-Methode) button1 haben. Das kannst du sehr leicht mit dem Debugger herausfinden: [Artikel] Debugger: Wie verwende ich den von Visual Studio?. Dann sollte auch klar werden, was dort passiert - oder eben nicht passiert.

Christian
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

@MrSparkle: Erstmal danke für deine Antwort :) Ich habe das jetzt soweit überprüft und festgestellt, dass das soweit so ist wie es sein sollte.

Vielleicht könnt ihr mir ja besser helfen, wenn ich den kompletten Code der betreffenden Klassen einstelle..

AulaMedia.cs(ich habe ein bisschen was geändert)

namespace AulaManager
{
    public partial class AulaMedia : Form
    {
        public AulaMedia()
        {
            InitializeComponent();
        }

        Auswaehlen aw;

        public void buttonSet(string button, string name, string path)
        {
            button1.Text = name;
        }

        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if(e.Button == MouseButtons.Right)
            {
                aw = new Auswaehlen();
                aw.Show();
            }
        }
    }
}

Auswaehlen.cs(auch hier Teile geändert)

namespace AulaManager
{
    public partial class Auswaehlen : Form
    {
        public Auswaehlen()
        {
            InitializeComponent();
        }

        AulaMedia aumed = new AulaMedia();

        OpenFileDialog opf1 = new OpenFileDialog();

        private void button1_Click(object sender, EventArgs e)
        {
            opf1.ShowDialog();
            textBox1.Text = System.IO.Path.GetFileName(opf1.FileName);
            textBox2.Text = opf1.FileName;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            aumed.buttonSet("placehold", textBox1.Text, textBox2.Text);   
        }

        private void button3_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

Gruß Mo
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1053

beantworten | zitieren | melden

AulaMedia aumed = new AulaMedia();
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5963
Herkunft: Leipzig

beantworten | zitieren | melden

Dazu auch: [FAQ] Kommunikation von 2 Forms
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
ErfinderDesRades
myCSharp.de - Experte

Avatar #avatar-3151.jpg


Dabei seit:
Beiträge: 5409

beantworten | zitieren | melden

@p!lle: Ich denke, son krypto-post bringt nix, ausser dass der TE sich dumm fühlt.

Ansonsten stimmt schon, dort wird ein AulaMedia erstellt, was ja ein Form ist, aber das Form wird nirgends angezeigt - seine .Show()-Methode nirgends aufgerufen.
Also sieht man auch nix, wenn man einen Button darauf neu betextet.

@TE: Ich denke, du musst einige Grundlagen dir erarbeiten, etwa die Bedeutung des Schlüsselwortes new, und das dahinter stehende OOP-Konzept, dass es normalerweise von jeder Klasse beliebig viele verschiedene Objekte geben kann.

Ohne derlei Grundlagen binnich pessimistisch, ob das Form2Form - Tut dir was bringt, oder genügend bringt, dass du das Prob gelöst kriegst.
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von ErfinderDesRades am .
Der frühe Apfel fängt den Wurm.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4001

beantworten | zitieren | melden

Hallo dmnjkr,

vllt. hilft dir dann eher mein Artikel dazu: Kommunikation von 2 Forms (s. "Typische Anfängerfehler" / "1. Neues Form-Objekt erstellen")
private Nachricht | Beiträge des Benutzers
dmnjkr
myCSharp.de - Member



Dabei seit:
Beiträge: 6

Themenstarter:

beantworten | zitieren | melden

@Th69 Danke dir :) Mit deiner Anleitung hats geklappt.
private Nachricht | Beiträge des Benutzers