IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Adámek
Člen
Avatar
Petr Adámek:16.7.2020 12:58

Ahoj.
Tvořím první složitější aplikaci. Bude obsahovat více user controlerů. Nejdou mi mezi user controlry a formem sdílet data.

Zkusil jsem: Zkoušel jsem pomocí tříd data přenášet, ale pravděpodobně jsem jim neporozuměl.

Chci docílit: Snažím se sdílet data mezi user controlery a formem. např, jsou 3 user controlery a form. V user controleru 2 nastavím hodnotu a tu potřebuju převést do zbýlých user controlerů (1 a 3) a do formu. Jak nejlépe na to?
děkuji za každou pomoc

 
Odpovědět
16.7.2020 12:58
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Petr Adámek
Tadeáš Burda :16.7.2020 13:12

Ahoj, Form nerobým ale ak ta chápem správne tak google "dependency injection for windows forms"... Vytvoriš 1 instanci triedy, kde ukladaš dáta a tú zazdielas 3 controllerom

 
Nahoru Odpovědět
16.7.2020 13:12
Avatar
Petr Adámek
Člen
Avatar
Petr Adámek:18.7.2020 15:15

Ahoj.
Přiblížím to.
Aktuálně mám třídu BallastClass, User control Ballast a Form. V UC mám tlačítko, po jehož zmáčknutí vytvořím instanci. Tuhle instanci (údaj o výkonu, názvu, počtu poloh) chci sdílet do Form, např. vypsat ve Formu v labelu. Dostal jsem se ke statické třídě. Ta by šla použít? Případně, jak by to podle tebe mělo vypadat? O třídy jsem se blíže začal zajímat dva dny zpět, tak omluvte neznalost. Jd mě o to je pochopit.

Kód Ballast clas

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication32
{
    class BallastClass
    {
        public string Nazev;
        public int Vykon;
        public int PocetPoloh;


    }
}

Kód UC Ballast

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication32
{
    public partial class BallastUC : UserControl
    {
        BallastClass actualBallast = new BallastClass();

        public BallastUC()
        {
            InitializeComponent();

        }

        private void BTNnts_Click(object sender, EventArgs e)
        {


            actualBallast.Nazev = "NTS";
            actualBallast.PocetPoloh = 4;
            actualBallast.Vykon = 600;

            LBLvypis.Text = actualBallast.Nazev + " " + Convert.ToString(actualBallast.PocetPoloh) + " " + Convert.ToString(actualBallast.Vykon);

        }

    }
}
 
Nahoru Odpovědět
18.7.2020 15:15
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Petr Adámek
Tadeáš Burda :19.7.2020 12:18

Caw, používaj tlačítko "Odpovedet", lebo mi neviskoci upozorneni a nevim ze si komentoval. Kazdopadne tu na stranke je tutorial DI , visvetlovat ti to nebudu precitaj si to a skus to pouzit. Ked tak napis a helpnu ti. Statiku nepouzivaj ked to nevis. A nepouzivaj ju ani ked to vis :-P

 
Nahoru Odpovědět
19.7.2020 12:18
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Petr Adámek
Tadeáš Burda :19.7.2020 12:24

Tady je co mi viplul google Odkaz . Ide oto ze vitvoris jednu instanci triedy a v controllery ju predas tim triedam. Potom ked sa neco zmeni v tej jednej instanci (save tich hodnot), tak kazda trida ktera ma odkaz na tu instanci sa dostane k tim datam. DI spravi to ze vitvori len tu jednu instanci a preda ju triedam ktere regnes v DI. To je cele

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
19.7.2020 12:24
Avatar
zelvicek
Člen
Avatar
Odpovídá na Petr Adámek
zelvicek:20.7.2020 10:14
  1. vážně tu jde o user controlery?
  2. pro změnu chování UC použij vlastnosti.
  3. pro notifikace (a přidružená data) z UC použij události.
 
Nahoru Odpovědět
20.7.2020 10:14
Avatar
Petr Adámek
Člen
Avatar
Odpovídá na Tadeáš Burda
Petr Adámek:20.7.2020 19:35

Ahoj Tadeáši
Moc děkuji za pomoc. Nakonec jsem začal tvořit bez UC, pouze ve Form. Očekával jsem, že aplikace bude složitější, ale zvládnu ji udělat pouze ve form. Po dokončení se pustí do DI a předělám ji. Teď ji potřebuju mít co nejdřív. nebude ti vadit, když se případně později ozvu o pomoc?
děkuju

 
Nahoru Odpovědět
20.7.2020 19:35
Avatar
Petr Adámek
Člen
Avatar
Odpovídá na zelvicek
Petr Adámek:20.7.2020 19:39

Ahoj
Ano, šlo o UC. V aplikaci mám 4 režimy apliakce a každý má své ovládací prvky. Chtěl jsem aplikaci realizovat pomocí UC, kdy by každý režím měl svůj UC. Aktuálně tvořím tak, že na panel naskládám ovládací prvky - panel pro každý režim. Není to profi ale funkci to pro teď splní :-)

 
Nahoru Odpovědět
20.7.2020 19:39
Avatar
Tadeáš Burda
Brigádník
Avatar
Odpovídá na Petr Adámek
Tadeáš Burda :21.7.2020 10:05

Poho, rad sem pomohel. J mozes napsat ked budes chcet.

 
Nahoru Odpovědět
21.7.2020 10:05
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 9 zpráv z 9.