Wie kann ich eine Methode in einen Button klick packen?

  • C#

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Wie kann ich eine Methode in einen Button klick packen?

    Hallo Leute,

    ich hab folgendes Problem:

    Ich will einen Prozess starten lassen auf den mehrere Buttons zugriff haben.

    In der Cmd varriante hab ich das auch hinbekommen also mit Kommandos halt.

    Aber jetzt heißt es ich kann keine Methode in diesen private void packen

    Quellcode

    1. static void server1(string[] args)
    2. public static void server1(string[] args)
    3. {
    4. Process test1 = new Process();
    5. test1.StartInfo.CreateNoWindow = false;
    6. test1.StartInfo.FileName = "ServerStart.bat";
    7. test1.StartInfo.RedirectStandardInput = true;
    8. test1.StartInfo.UseShellExecute = false;
    9. }
    10. private void button1_Click(object sender, EventArgs e)
    11. {
    12. test1.Start();
    13. }

    Dann deklariere diese global in der Klasse:
    private Process test1;

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    DaNeubi schrieb:

    C#-Quellcode

    1. test1.Start();
    machst Du

    C#-Quellcode

    1. if(test1 != null)
    2. {
    3. test1.Start();
    4. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Okay jetz hab ichs eigentlich doch glaub ich so gemacht aber es kommt der Fehler "NullReferenceExpection"


    Quellcode

    1. private Process test1;
    2. private void button1_Click(object sender, EventArgs e)
    3. {
    4. test1.StartInfo.CreateNoWindow = false;
    5. test1.StartInfo.FileName = "ServerStart.bat";
    6. test1.StartInfo.RedirectStandardInput = true;
    7. test1.StartInfo.UseShellExecute = false;
    8. if (test1 != null)
    9. {
    10. test1.Start();
    11. }
    12. }

    DaNeubi schrieb:

    NullReferenceExpection
    Du misst eine Instanz von Process erstellen:

    DaNeubi schrieb:

    C#-Quellcode

    1. /*Process*/ test1 = new Process();
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Super jetzt klappts bis auf das sich das cmd Fenster dass diese batch datei Startet sich gleich wieder schließt...

    Quellcode

    1. @echo off
    2. echo "Server wird gestartet..."
    3. pause


    Die Datei ist nur übergangsweise aber sie biete das was ich brauch ein offenes cmd in das ich befehle per klick eintragen kann

    Quellcode

    1. private Process test1;
    2. private void button1_Click(object sender, EventArgs e)
    3. {
    4. test1 = new Process();
    5. test1.StartInfo.Arguments = "/k";
    6. test1.StartInfo.CreateNoWindow = false;
    7. test1.StartInfo.FileName = "ServerStart.bat";
    8. test1.StartInfo.RedirectStandardInput = true;
    9. test1.StartInfo.UseShellExecute = false;
    10. if (test1 != null)
    11. {
    12. test1.Start();
    13. }
    14. }

    ErfinderDesRades schrieb:

    bewirken?
    Das war "historisch" gewachsen (da waren mal zwei Prozeduren) und ist nun überholt.
    ----
    @DaNeubi Wenn Du die Process-Instanz außerhalb der Prozedur nicht brauchst, kannst Du sie reinnehmen und den null-Test weglassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!