C# Methode soll ausgeführt werden beim Porgramm Start

Injector

Lt. Junior Grade
Registriert
Mai 2016
Beiträge
301
Hi,
ich arbeite mit C# und bräuchte eure Hilfe. Ich möchte, dass mein Programm beim Starten direkt eine Methode aufruft wie kann ich das machen?. Eine weitere Frage, ich hab ein Button und wenn ich auf dem Button klicke, soll er von 10 auf 1 runter zählen und wie er runter zählt sollte im Button stehen wie kann ich das auch machen?

Mfg.
 
Leider hab ich die Zeit dafür nicht. Ich arbeite Normalerweise mit Java(Konsolen Anwendung) aber mein Arbeitgeber verlangt von mir, dass ich mit C#(Windows Form Anwendung) arbeite, was für mich ganz neu ist, auch wen die Syntax sich ähnelt.

PS: hast du so ein Link auch für Java?
 
Zuletzt bearbeitet:
Injector schrieb:
Leider hab ich die Zeit dafür nicht. Ich arbeite Normalerweise mit Java(Konsolen Anwendung) aber mein Arbeitgeber verlangt von mir, dass ich mit C#(Windows Form Anwendung) arbeite, was für mich ganz neu ist, auch wen die Syntax sich ähnelt.

Einstiegspunkt (Main) ist typischerweise in C#: Program.cs -> Das bringt dir aber nur was um z.b. die Commandline-Argumente rauszuziehen oder Logging zu initialisieren, Hauptthread zu starten, was auch immer du auch machen willst.

Und wenn du aus nem Form was beim Start aufrufen musst, dann ist es wie in vielen anderen Retained-GUI-Frameworks: Alles wird über Events geregelt.

Siehe: https://msdn.microsoft.com/en-us/library/system.windows.forms.form.load(v=vs.110).aspx

Übrigens soviel anderst ist C# nicht, denn C# ist schließlich ne Mischung aus Java und Delphi ;)
 
Zuletzt bearbeitet:
Injector schrieb:
Hi,
ich arbeite mit C# und bräuchte eure Hilfe. Ich möchte, dass mein Programm beim Starten direkt eine Methode aufruft wie kann ich das machen?.

In der Main-Methode oder über das Load-Event deines Forms das du startest.

Injector schrieb:
Eine weitere Frage, ich hab ein Button und wenn ich auf dem Button klicke, soll er von 10 auf 1 runter zählen und wie er runter zählt sollte im Button stehen wie kann ich das auch machen?

Ändere mit einem Timer den Text des Buttons.
 
Zuletzt bearbeitet:
Shio schrieb:
In der Main-Methode oder über das Load-Event deines Forms das du startest.



Ändere mit einem Timer den Text des Buttons.

Danke so was hilft schon sehr habe es mit der Load-Event gemacht und geht wunderbar, aber mit dem Timer den Text zu ändern habe ich noch nicht ganz geschafft kannst du mir vielleicht etwas genauer sagen?
 
Hier eine unschöne Lösung

Code:
        public async Task<string> DoBusyThings()
        {
            await Task.Delay(10000);
            return "";
        }

        private async void btnTest_Tapped(object sender, TappedRoutedEventArgs e)
        {
            Task<string> asyncString = this.DoBusyThings();
            this.btnTest.Text = "10";

            while (!asyncString.IsCompleted)
            {
                await Task.Delay(1000);
                this.btnTest.Text = "Verbleibende Zeit in Sekunden berechnen und Ergebnis hier eintragen.";
            }
        }

btnTest.Text musst du dabei so ändern, dass es deinem Button Text entspricht.
 
Zuletzt bearbeitet:
Die Lösung von michi ist um einiges besser.
Ist noch zu früh für mich :rolleyes:
 
Ich weiß wie man einen Timer implementiert und auch zum laufen bringt aber ich weiß nicht wie ich die Ticks zB. von 10 auf 1, dass es in meinem Button angezeigt wird bzw. weiß ich nicht wie ich mein Button mit dem Timer in Verbindung bringen soll.

EDIT: @michi174 bei mir erkennt er "Task", "TappedRoutedEventArgs", "DoBusyThings" und "asyncString" als Fehler
 
Zuletzt bearbeitet:
vermutlich fehlt dir

Code:
using System.Threading.Tasks;

TappedRoutedEventArgs kann ich nicht sagen, was für Parameter eine Windows Forms Anwendung hier unterstützt. Ich arbeite mit WPF.
Wenn du mit Visual Studio arbeitest solltest du mit einem Doppelklick auf den Button das richtige Event automatisch erstellt bekommen.
 
Code:
public async Task<string> DoBusyThings()
        {
            await Task.Delay(10000);
        }//<-- Hier sagt er mir: Not all code paths return a value
Ergänzung ()

Ich hab gedacht sowas würde gehen
Code:
 for (int i = 0; i <= 10; i++)
            {
                this.button1.Text = i;
            }
aber geht wohl nicht :D oder wäre so was ähnliches möglich?
 
Injector schrieb:
Code:
public async Task<string> DoBusyThings()
        {
            await Task.Delay(10000);
        }//<-- Hier sagt er mir: Not all code paths return a value

Jo habe den Code nochmal editiert nach meinem Post. Natürlich will er einen Rückgabewert haben,
deshalb gebe ich ihm mit return ""; einen leeren String zurück -> unschön, sollte aber passen.
 
Danke für deine Hilfe, habe es aber trotzdem anders gemacht. Fals der andere auch mal das gleiche Problem wie ich hat.
Code:
public void test()
        {
            (new System.Threading.Thread(() =>
            {
                for (int i = 10; i >= 0; i--)
                {
                    Thread.Sleep(1000);
                    Invoke((Action)delegate()
                    {
                        this.button1.Text = "" + i;

                    });
                }
            })).Start();
        }
 
Zurück
Oben