Avatar
Michaal.K
Člen
Avatar
Michaal.K:

Ahoj,
potřebuju poradit. Mám aplikaci a ve formuláři je celkem hodně komponent numericUpDown (pojmenované jsou numericUpDown1 až 50). Potřeboval bych ze všech numericUpDown uložit hodnoty do pole. Nechce se mi psát 50 řádek numericUpDown1­.value = pole[0]. Nelze to nějak přes cyklus for nebo jinak??
Díky za odpověď.

 
Odpovědět 26. ledna 9:03
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:

To zavání špatným návrhem... K čemu je potřeba mít tolik NumericUpDown?

Nahoru Odpovědět 26. ledna 9:30
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Michaal.K:

Jsou to parametry k uživatelskému nastavení. Tyto parametry zadá uživatel a následně jsou komunikací odeslány.

 
Nahoru Odpovědět 26. ledna 9:39
Avatar
Michaal.K
Člen
Avatar
Michaal.K:

Potřebuji jen hodnoty těchto komponent načíst do pole abych je mohl uložit do ini souboru;)

 
Nahoru Odpovědět 26. ledna 9:41
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michaal.K
Jan Vargovský:

Buď skrz reflexi nebo si přidej reference do jednoho pole a pak s tím normálně pracuj.

 
Nahoru Odpovědět 26. ledna 11:44
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Díky za rady. Nemohl bys mi to lépe popsat ani jedno jsem zatím nepoužíval....

 
Nahoru Odpovědět 26. ledna 12:12
Avatar
Honza
Člen
Avatar
Honza:

Můžeš v cyklu projít kolekci Controls a hledat v nich všechny položky které jsou typu NumericUpDown a hodnotu si pak ukládat do pole. Pokud ty NumericUpDowny vložíš do nějakého panelu nebo groupboxu, tak se ti tam nebudou plést ostatní itemy, protože budeš prohledávat pouze kolekci <tvujGroupbox>­.controls (předpokládám že používáš winforms).

Nahoru Odpovědět 26. ledna 12:44
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Honza
Michaal.K:

To zní dobře. Winform používám. Ty NumericUpDown mám umístěné v TabControl (ve třech záložkách) šlo by nějak prohledávat jednotlivé záložky?? Prosím o více infa control nikdy jsem stouto kolekcí nedělal. Díky

 
Nahoru Odpovědět 26. ledna 13:21
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michaal.K
Jan Vargovský:

Skrz tu reflexi by to bylo zbytečně složité. Pak je tu ten způsob co navrhl Honza, ale ten je taky takový, že nemáš zajištěnou sekvenci těch kontrolů. Takže skrz to pole:

NumericUpDown[] numericUpDowns = new NumericUpDown[]
{
   numericUpDown1, numericUpDown2, ... , numericUpDownN
};

Lepší způsob, který by byl zároveň i čitelný není. Reflexe může být napsána i hezky, ale furt je to reflexe, které by ses měl vyhnout, pokud to jde.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 26. ledna 18:55
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Díky všem za rady. Nakonec jsem použil variantu od Honzi Vargovského a funguje to bezvadně, ještě jednou díky. ;-)

 
Nahoru Odpovědět 27. ledna 15:45
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Ahoj,
nezlob te se, že nezakládám nové téma, ale patří to ještě k tomuto. Vytvořil jsem si několi polí s referencemi:

RadioButton[] radiobuttons = new RadioButton[]
            {
                radioButtonM1_DC, radioButtonM1_Harmonic, radioButtonM1_Pulse, radioButtonM1_PulseIrc, radioButtonM1_PulseIrcTenz,
                radioButtonM2_DC, radioButtonM2_Harmonic, radioButtonM2_Pulse, radioButtonM2_PulseIrc, radioButtonM2_PulseIrcTenz,
                radioButtonM3_DC, radioButtonM3_Harmonic, radioButtonM3_Pulse, radioButtonM3_PulseIrc, radioButtonM3_PulseIrcTenz,
                radioButtonM4_DC, radioButtonM4_Harmonic, radioButtonM4_Pulse, radioButtonM4_PulseIrc, radioButtonM4_PulseIrcTenz,
                radioButtonM5_DC, radioButtonM5_Harmonic, radioButtonM5_Pulse, radioButtonM5_PulseIrc, radioButtonM5_PulseIrcTenz,
                radioButtonM6_DC, radioButtonM6_Harmonic, radioButtonM6_Pulse, radioButtonM6_PulseIrc, radioButtonM6_PulseIrcTenz,
                radioButtonM7_DC, radioButtonM7_Harmonic, radioButtonM7_Pulse, radioButtonM7_PulseIrc, radioButtonM7_PulseIrcTenz,
                radioButtonM8_DC, radioButtonM8_Harmonic, radioButtonM8_Pulse, radioButtonM8_PulseIrc, radioButtonM8_PulseIrcTenz,
                radioButtonM9_DC, radioButtonM9_Harmonic, radioButtonM9_Pulse, radioButtonM9_PulseIrc, radioButtonM9_PulseIrcTenz,
                radioButtonM10_DC, radioButtonM10_Harmonic, radioButtonM10_Pulse, radioButtonM10_PulseIrc, radioButtonM10_PulseIrcTenz,

            };

            NumericUpDown[] numericUpDowns = new NumericUpDown[]
            {

                numericUpDownM1_Harmonic_PulsWidth, numericUpDownM1_Harmonic_Freq, numericUpDownM1_Pulse_PulsWidth, numericUpDownM1_Pulse_SlotWidth, numericUpDownM1_Pulse_Freq,
                numericUpDownM1_PulseIrc_PulsWidth, numericUpDownM1_PulseIrc_SlotWidth, numericUpDownM1_PulseIrc_IrcPos, numericUpDownM1_PulseIrcTenz_PulsWidth,
                numericUpDownM1_PulseIrcTenz_SlotWidth, numericUpDownM1_PulseIrcTenz_IrcStart, numericUpDownM1_PulseIrcTenz_IrcStop, numericUpDownM1_PulseIrcTenz_Tenz,

                numericUpDownM2_Harmonic_PulsWidth, numericUpDownM2_Harmonic_Freq, numericUpDownM2_Pulse_PulsWidth, numericUpDownM2_Pulse_SlotWidth, numericUpDownM2_Pulse_Freq,
                numericUpDownM2_PulseIrc_PulsWidth, numericUpDownM2_PulseIrc_SlotWidth, numericUpDownM2_PulseIrc_IrcPos, numericUpDownM2_PulseIrcTenz_PulsWidth,
                numericUpDownM2_PulseIrcTenz_SlotWidth, numericUpDownM2_PulseIrcTenz_IrcStart, numericUpDownM2_PulseIrcTenz_IrcStop, numericUpDownM2_PulseIrcTenz_Tenz,

                numericUpDownM3_Harmonic_PulsWidth, numericUpDownM3_Harmonic_Freq, numericUpDownM3_Pulse_PulsWidth, numericUpDownM3_Pulse_SlotWidth, numericUpDownM3_Pulse_Freq,
                numericUpDownM3_PulseIrc_PulsWidth, numericUpDownM3_PulseIrc_SlotWidth, numericUpDownM3_PulseIrc_IrcPos, numericUpDownM3_PulseIrcTenz_PulsWidth,
                numericUpDownM3_PulseIrcTenz_SlotWidth, numericUpDownM3_PulseIrcTenz_IrcStart, numericUpDownM3_PulseIrcTenz_IrcStop, numericUpDownM3_PulseIrcTenz_Tenz,

                numericUpDownM4_Harmonic_PulsWidth, numericUpDownM4_Harmonic_Freq, numericUpDownM4_Pulse_PulsWidth, numericUpDownM4_Pulse_SlotWidth, numericUpDownM4_Pulse_Freq,
                numericUpDownM4_PulseIrc_PulsWidth, numericUpDownM4_PulseIrc_SlotWidth, numericUpDownM4_PulseIrc_IrcPos, numericUpDownM4_PulseIrcTenz_PulsWidth,
                numericUpDownM4_PulseIrcTenz_SlotWidth, numericUpDownM4_PulseIrcTenz_IrcStart, numericUpDownM4_PulseIrcTenz_IrcStop, numericUpDownM4_PulseIrcTenz_Tenz,

                numericUpDownM5_Harmonic_PulsWidth, numericUpDownM5_Harmonic_Freq, numericUpDownM5_Pulse_PulsWidth, numericUpDownM5_Pulse_SlotWidth, numericUpDownM5_Pulse_Freq,
                numericUpDownM5_PulseIrc_PulsWidth, numericUpDownM5_PulseIrc_SlotWidth, numericUpDownM5_PulseIrc_IrcPos, numericUpDownM5_PulseIrcTenz_PulsWidth,
                numericUpDownM5_PulseIrcTenz_SlotWidth, numericUpDownM5_PulseIrcTenz_IrcStart, numericUpDownM5_PulseIrcTenz_IrcStop, numericUpDownM5_PulseIrcTenz_Tenz,
            };

            ComboBox[] comboBoxs = new ComboBox[]
            {
                comboBoxM1_PulsIrcTenz_Edge, comboBoxM2_PulsIrcTenz_Edge, comboBoxM3_PulsIrcTenz_Edge, comboBoxM4_PulsIrcTenz_Edge,
                comboBoxM5_PulsIrcTenz_Edge, comboBoxM6_PulsIrcTenz_Edge, comboBoxM7_PulsIrcTenz_Edge, comboBoxM8_PulsIrcTenz_Edge,
                comboBoxM9_PulsIrcTenz_Edge, comboBoxM10_PulsIrcTenz_Edge, comboBoxM11_PulsIrcTenz_Edge, comboBoxM12_PulsIrcTenz_Edge,
                comboBoxM13_PulsIrcTenz_Edge, comboBoxM14_PulsIrcTenz_Edge, comboBoxM15_PulsIrcTenz_Edge, comboBoxM16_PulsIrcTenz_Edge
            }

ale když ty pole dám mimo metody ve kterých jsem je používal a dám je jako globální proměnné (potřebuji k nim přistupovat z více metod), tak mi to hodí tuto chybu:

A field initializer cannot reference the non-static field, method, or property 'numericUpDownM1_Harmonic_PulsWidth'

Napadá mě jen jedno řešení vytvořit pro každé pole metodu a vracet hodnotu pole. Nelze nějak vytvořit jako globální proměnné?? Díky...

 
Nahoru Odpovědět 29. ledna 10:02
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michaal.K
Jan Vargovský:

Globální proměnná ne, ale instancni ano. Dej si ty deklarace mimo metody(kdekoliv do třídy) a nainicalizuj si to v konstruktoru.

 
Nahoru Odpovědět 29. ledna 10:11
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Teď to nějak nechápu. V C# jsem začátečník...
Když dám ty deklarace těch polí kdekoliv do třídy hned to vyhodí chybu:

A field initializer cannot reference the non-static field, method, or property 'numericUpDownM1_Harmonic_PulsWidth'

A teď nevím jak přesně vytvořit konstruktor pro to pole?? Když ho zkouším vytvořit pořád to hlásí chyby. Díky

 
Nahoru Odpovědět 29. ledna 11:04
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Tak konstruktor jsem už mám:-) Ale nevím jak tam mám nainicializovat ty pole??

 
Nahoru Odpovědět 29. ledna 11:10
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Michaal.K
Jan Vargovský:
class X
{
// deklarace
private TypKontrolky[] kontrolky;

public X()
{
// inicializace v konstruktoru
kontrolky = new TypKontrolky[] {...};
}
}
 
Nahoru Odpovědět 29. ledna 15:58
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Michaal.K
ostrozan:

Ty NumericUpDown mám umístěné v TabControl (ve třech záložkách) šlo by nějak prohledávat jednotlivé záložky??

nejjednodušší asi bude, když si to pole rozdělíš na tři - numericUpDowns­Panel1,numeri­cUpDownsPanel2,nu­mericUpDownsPa­nel3 a do nich dáš odkazy na příslušné kontrolky

 
Nahoru Odpovědět 29. ledna 18:05
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Jan Vargovský
Michaal.K:

Díky moc. Vše funguje jak má. Snad to byl poslední dotaz ;-) Ještě jednou díky

 
Nahoru Odpovědět 1. února 13:18
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 17 zpráv z 17.