Diskuze: Jak pouzit funkci z Form1 ve Form2

C# .NET .NET (C# a Visual Basic) Jak pouzit funkci z Form1 ve Form2 American English version English version

Avatar
davaj
Člen
Avatar
davaj:

Ahoj, mam 2 formy, kde pouzivam stejne funkce treba tyto:

//form1.cs
/* play */
private void playPB_Click(object sender, EventArgs e)
{
    play();
}
private void play()
{
    WMPlayer.URL = @current_song;
    WMPlayer.Ctlcontrols.play();
    if (WMPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
    {
        WMPlayer.Ctlcontrols.play();
    }
}
//form2.cs
/* play */
private void playPB_Click(object sender, EventArgs e)
{
    play();
}
private void play()
{
    WMPlayer.URL = @current_song;
    WMPlayer.Ctlcontrols.play();
    if (WMPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
    {
        WMPlayer.Ctlcontrols.play();
    }
}

Ja bych chtel tu funkci ve formu2 pouzit tak, aniz bych mel 2x to stejne v obou formularich. Nevim jak ji vyvolat.

 
Odpovědět 11. března 14:01
Avatar
Odpovídá na davaj
Lukáš Hypša:

Já se v tom nevyznám :D ale nešlo by něco jako Form1.Play()?
Prostě jako když voláš metodu z jiné třídy?

Nahoru Odpovědět 11. března 14:26
I když se programování učím jenom z interetu, velmi mě baví a doufám, že se tím jednou budu i živit.
Avatar
Michal Pipal
Člen
Avatar
Odpovídá na davaj
Michal Pipal:

Nevim, v cem delas (WF, WPF, UWP), ale predpokladam, ze se ti formular dedi, z Form, neco jako Form2 : Form nebo z Page, pokud pracujes v necem jinem.
Zkusil bych vytvorit mezitridu, tzn. neco jako:

public class MyHelpForm : Form
{
        //spolecny kod pro obe stranky
}

A z tehle pomocne tridy az tvorit formulare, tudiz prepsat hlavicku formularu na:

public class Form1 : MyHelpForm

, resp.:

public class Form2 : MyHelpForm
 
Nahoru Odpovědět  +1 11. března 15:10
Avatar
davaj
Člen
Avatar
davaj:

Editováno 11. března 15:52
 
Nahoru Odpovědět 11. března 15:49
Avatar
davaj
Člen
Avatar
Odpovídá na Michal Pipal
davaj:

Ten MyHelpForm nezna dane komponenty, ktere jsou ve formu obsazeny..
treba WMPlayer
Error 3 The name 'WMPlayer' does not exist in the current context

Jak bych pak volal funkci v MyHelpForm ve form1 ?

 
Nahoru Odpovědět 11. března 15:51
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Michal Pipal
ostrozan:

Podle toho "Form" je to WF - ve WPF by to bylo "Window " :-)

 
Nahoru Odpovědět 11. března 19:06
Avatar
jzvire01
Člen
Avatar
jzvire01:

Udělej si třídu, která je public static a poté tam dej tu metodu, která bude taky public static. Pak stačí u těch oken dát jen Třída.Metoda.

Editováno 11. března 21:42
 
Nahoru Odpovědět 11. března 21:40
Avatar
jzvire01
Člen
Avatar
jzvire01:

A nebo tu metodu v to m formu1 udělej public a v tom druhym stačí v tom kliku udělat

Form1 form1 = new Form1();
form1.Metoda();
 
Nahoru Odpovědět 11. března 21:51
Avatar
Odpovídá na davaj
Michal Štěpánek:

Funkci ve Form1 udělej jako public. Do Form2 si předej instanci Form1 a pak můžeš použít tu funkci z Form1.

Nahoru Odpovědět 11. března 23:28
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
davaj
Člen
Avatar
davaj:

Tlacitko pak nereaguje a nic nedela.

kdyz mam ve form2:
Form1 form1 = new Form1();

form1.play();
(VS ukazuje Form1 Form2.form1 kdyz najedu mysi na form1)
mam to jako public

Chtel bych to vyresit pomoci te pomocne tridy.. ale nedari se mi to .. Je tu nekde clanek ?
Podarilo se mi akorat z Form2 (temi stejnymi tlacitky) ovladat formular Form1, coz nechci..

 
Nahoru Odpovědět 12. března 12:14
Avatar
jzvire01
Člen
Avatar
jzvire01:

Udělej si třídu a v ní metodu:

public static class Trida
{
 public static void Play()
{
 WMPlayer.URL = @current_song;
    WMPlayer.Ctlcontrols.play();
    if (WMPlayer.playState == WMPLib.WMPPlayState.wmppsPaused)
    {
        WMPlayer.Ctlcontrols.play();
    }
}
}

A pak stačí dát jen Trida.Play;

 
Nahoru Odpovědět 12. března 12:24
Avatar
davaj
Člen
Avatar
Odpovídá na jzvire01
davaj:

Error 3 The name 'WMPlayer' does not exist in the current context
Error 3 The name 'current_song' does not exist in the current context
Error Trida.cs

 
Nahoru Odpovědět 12. března 12:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.