Beantwortet - Funktionen einer anderen Form per Buttom Klick öffnen

  • geschlossen
  • C#

  • Raptor19
  • 1727 Aufrufe 13 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Beantwortet - Funktionen einer anderen Form per Buttom Klick öffnen

    Ich hab das Problem das ich nicht auf die Funktion zugreifen kann obwohl ich sie übergeben hab -.-
    Ich hab stark das gefühl das das nen anfänger fehler ist an denn ich nicht mehr denke ><

    In meiner Sudoku form steht:

    Quellcode

    1. Namenseingabe = new Namensabfrage(this);
    2. Namenseingabe.Show();


    und in der Namensabfrage steht

    Quellcode

    1. public partial class Namensabfrage : Form
    2. {
    3. public Namensabfrage(Sodoku game)
    4. {
    5. InitializeComponent();
    6. }
    7. public string Gewinnername;
    8. public void button_return_Click(object sender, EventArgs e)
    9. {
    10. Gewinnername = Txtbox_Namenseingabe.ToString();
    11. game.The_Best(Gewinnername);
    12. }
    13. }
    Alles anzeigen


    Hier die Fehlermeldung

    Quellcode

    1. Fehler 1 Der Name "game" ist im aktuellen Kontext nicht vorhanden.


    Wie bekomme ich das hin -.-"
    Sitzt da seit ca 2h dran und tratte auf der stelle rum (trotzt google und handbuch ...)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Raptor19 ()

  • Raptor19 schrieb:

    Ich hab das Problem das ich nicht auf die Funktion zugreifen kann obwohl ich sie übergeben hab -.-

    Meinst du mit "Funktion" game?

    Denn da, wo du game benutzt, hast du es ueberhaupt nicht uebergeben:

    Raptor19 schrieb:

    Quellcode

    1. public void button_return_Click(object [B]sender[/B], EventArgs [B]e[/B])
    2. {
    3. Gewinnername = Txtbox_Namenseingabe.ToString();
    4. [COLOR='Red']game[/COLOR].The_Best(Gewinnername);
    5. }


    Du hast zwar zwei Argumente uebergeben, aber du benutzt sie ueberhaupt nicht. o0
    Wo ist der Discord Server
  • ...

    Ich hab doch gesagt das das Problem ist das ich die Übergebene Funktion game nicht bei der 2 Funktion rüberbekomme (vom Konstruktor zum Buttomklick Funktion)

    Sudoku ist übrigens ne "ganze" Form die ich übergeben hab und auf game "zugewiesen" hab ...
  • Ja, im Konstruktor wird ein game uebergeben, aber es wird ja nix damit gemacht!

    Quellcode

    1. public partial class Namensabfrage : Form
    2. {
    3. public string Gewinnername;
    4. public Sodoku myGame;
    5. public Namensabfrage(Sodoku game)
    6. {
    7. InitializeComponent();
    8. myGame = game;
    9. }
    10. public void button_return_Click(object sender, EventArgs e)
    11. {
    12. Gewinnername = Txtbox_Namenseingabe.ToString();
    13. myGame.The_Best(Gewinnername);
    14. }
    15. }
    Alles anzeigen


    Btw: Deine Klasse heisst Sodoku, nicht Sudoku.

    PS: Ich versteh immernoch nicht, warum du button_return_Click() zwei Argumente uebergibst, obwohl du sie gar nicht benutzt. :/
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()

  • Ich nutze Visual Studio 2008 mit c# und da werden diese sachen automatisch eingetragen wenn ich das Grundkonstrukt der Funktion erstellen lasse (doppelklick auf denn Buttom im Form-Designer)

    ps Warn Tipfehler im Prog ist es tatsächlich Sodoku ^^

    btw Ich werd mal schnell deinen Vorschlag ausprobieren ^^

    EDIT:

    Nein Funzt nicht. Mir wird diese Fehlermeldung entgegen geschmißen

    Quellcode

    1. Fehler 1 Eine implizite Konvertierung vom Typ "Games.Sodoku" in "string" ist nicht möglich.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Raptor19 ()

  • Aso ok.

    Und mit der Fehlermeldung: Sieht nicht so aus, als obs meine Schuld waere. Ich denke, wenn in deinem Code von oben das game bekannt waere, haettest du glaub ich die gleiche Fehlermeldung.

    Zeig mal wie die Funktion The_Best() definiert ist.
    Oder zeig mal am besten ueberhaupt den ganzen Code.

    Ich deute die Fehlermeldung erstmal so:
    Er versucht irgendwo in The_Best() myGame in einen string reinzustecken oder andersrum oder The_Best() wird auf strings angewandt.

    Die Fehlermeldung ist ueberhaupt ziemlich allgemein. Gibt der keine Zeilennummern an oder so?
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Skyte ()

  • public Sodoku myGame;
    myGame = game;

    mygame = string

    game = Ein Form verweiß

    Du wolltest das doch in nen String packen ^^

    die Fehlermeldung kommt bei > myGame = game; <

    [CODE]
    public void The_Best(string bestname)
    {
    lbl_0_The_Best.Text = "Beste Zeit: " + Time_h + ":" + Time_m + ":" + Time_s + ":" + Time_ms + "von" + bestname;
    }
    [CODE]

    P.s Der gesamte code wäre nen bischen arg lang (>200 Zeilen(Sind halt Gewinn abfragen, nen paar beispiel Sodokus und nen prüfer für neu eingegebene Sudokus enthalten))
    Davon funktioniert aber alles wenn ich diese funktion ausklammer -.-
    Normalerweise bekomm ich solche Probleme ja zur not per Google gelöst aber ich find da immer noch nix...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Raptor19 ()

  • >200 Zeilen ist doch nicht viel, kannst ja auch Nopaste oder so benutzen, dann ist es uebersichtlicher.

    Mit dem, was du geschrieben hast, kann ich nix anfangen, ich brauche den richtigen Code.


    Z.B.:
    Wo genau im Code steht das, was du geschrieben hast?
    public Sodoku myGame;
    myGame = game;

    Das sollte naemlich in verschiedenen Bereichen stehen, zumindestens wenn es das sein soll, was ich oben geschrieben hab.
    mygame = string

    Was ist das denn? Wo kommt mygame her (ich kenne nur myGame) und was soll string sein?
    game = Ein Form verweiß

    Genauer bitte, und auch wo dieser Verweis definiert wird.

    Also am besten halt den ganzen Code!
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Skyte ()

  • Nette Sache das nopaste
    Die Sache wo es Importiert wird:
    Nopaste - C# Code 1

    und das wo die Form hinsoll

    Nopaste - C# Code 2

    sind doch noch net ganz so viele Zeilen in demm Teil des Programms ^^ (Soll ne Spiele Sammlung werden als Übung für die Schule... Sodoku,TicTacToe(Fertig), 4 Gewinnt und nen Schach (alles ohne Ki ... erstmal ;))

    EDIT:
    Oh Gott ich muss übersichtlicher Programieren ><
    Ganz unten steht die übergabe der Parameter (bzw der Form)
  • Also als Code 2 muesste dieser funzen, wuesste nicht, was da falsch sein soll:

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace Games
    10. {
    11. public partial class Namensabfrage : Form
    12. {
    13. public string Gewinnername;
    14. public Sudoku myGame;
    15. public Namensabfrage(Sudoku game)
    16. {
    17. InitializeComponent();
    18. myGame = game;
    19. }
    20. public void button_return_Click(object sender, EventArgs e)
    21. {
    22. Gewinnername = Txtbox_Namenseingabe.ToString();
    23. myGame.The_Best(Gewinnername);
    24. }
    25. }
    26. }
    Alles anzeigen

    bzw. hier: Nopaste - Code 2

    Allerdings muesste da was fehlen, denn im ersten Code:

    Quellcode

    1. private void Complet_Check()
    2. {
    3. if (lbl_q1_z1.Text == "1" && lbl_q1_z2.Text == "1")
    4. {
    5. Namenseingabe = new Namensabfrage(this);
    6. [B]Namenseingabe.Show();[/B]
    7. //Time_ms Time_s Time_m Time_h
    8. }
    9. }

    Da wird die Methode Show() aufgerufen, aber im Code 2 hast du gar kein Show() implementiert. :confused:

    Edit: So, bin jetzt pennen, bis morgen.^^
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()

  • Kann es sein das du nicht häufig mit Visual Studio arbeitest? (bzw mit der nicht konsolen version)
    Denn ohne 'Klasse'.show wird die aufgerufene Form-Applicaition nicht geöffnet (hier 2 labels, ne Textbox und nen Buttom zum Nameneingeben für die Highscore Liste)

    Hier mal nen Bild von denn beiden "Formen"

    img230.imageshack.us/my.php?image=unbenanntas3.png

    Bis Morgen ^^

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Raptor19 ()

  • Hab noch nie mit Visual Studio oder aehnlichem gearbeitet. Und eigentlich auch noch nie wirklich mit C#.
    Aber die Frage war trotzdem ueberfluessig, hab naemlich total vergessen, dass ja von Form geerbt wird.
    Und wahrscheinlich ist in Form halt die Methode Show() implementiert. Naja, ist halt schon spaet.^^

    Funktionierts denn jetzt?
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()

  • Es funktioniert mit der

    public Sudoku mygame
    mygame = game vaiante

    Hatte ganz oben nen Fehler gemacht bei übertrage deines Vorgeschlagenen Codes -.- Hatte ausversehentlich da public string mygame stt public Sudoku eingetragen

    War halt spät nd meine E-Drinks waren alle ^^

    Vielen Dank für deine geduldige Hilfe :)

    Can be Close (Präfix änder ich gleich)

    Ps. Warum gibts denn hier kein Done Präfix oder ähnliches ?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Raptor19 ()

  • Raptor19 schrieb:

    Hatte ganz oben nen Fehler gemacht bei übertrage deines Vorgeschlagenen Codes

    Lol. Fuer sowas gibs Copy & Paste. :P

    Hatte mich hier schon gewundert, was du fuer komische Sachen schreibst, die in meinem Code ueberhaupt nicht vorkommen.
    Tja, ist halt schwierig einen Fehler in einem Code zu finden, den man gar nicht kennt. ;)

    Warum gibts denn hier kein Done Präfix oder ähnliches ?

    Jo, ist echt seltsam. o0
    Wird sicherlich bald gefixt.

    Aso, und am besten machst du noch deine Attribute private oder protected.
    Wenn du sie von aussen abrufen oder aendern willst, machste halt Getter- und Settermethoden bzw. in C# wird das ja mit Properties gemacht.
    Wo ist der Discord Server

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Skyte ()