List (Of String) jako globální proměnná   otázka

VB.NET, WinForms

Dobrý den,

prvně nastíním o co mi jde. Chtěl bych mít globální seznam napříč všemi třídami a procedurami, kde bych měl vždy název sloupce a vyfiltrované hodnoty. Ten bych si mohl brát do různých dotazů SQL atd.

Protože nevím kolik filtrů bude, nepoužil jsem pole, kde bych musel znát dopředu velikost, ale použil jsem List (Of String), kde ukládám:

pozice 0 = název sloupce 1

pozice 1 = hodnoty ve sloupci 1 k filtraci

pozice 2 = název sloupce 2

pozice 3 = hodnoty ve sloupci 2 k filtraci

atd.

List jsem si chtěl deklarovat v jedné třídě jako globální, tzn:

Public Class SQLcontrol
    Public PoleFiltr As New List(Of String)

Z druhé třídy mám odkaz na první jako

Public Class Filtr
    Dim SQL As New SQLcontrol

V třídě Filtr, což je vlastně Windows Form, do tohoto listu nasázím hodnoty

SQL.PoleFiltr.Add(Projekt.newColumn.HeaderText)
SQL.PoleFiltr.Add(SQLhodnoty)

A vše funguje skvěle. Bohužel když zavřu okno "Filtr", tak se list vymaže. Já bych potřeboval aby v něm hodnoty zůstávaly do té doby, než je vymažu ručně, nebo nezavřu všechny okna (celý program).

Lze to nějak udělat? Kde dělám chybu? Děkuji moc!

Petr

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč nepoužijete enumeration?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zřejmě chcete použít statickou proměnnou, která je přístupná odevšud bez nutnosti vytváření instance třídy. Říkejme tomu globální proměnná.

1. Vyvarujte se použití globálních proměnných, je to proti pravidlům OOP.

2. To co jste stvořil není globální proměnná, ale obyčejná instanční proměnná, proto se "ztrácí". Globální proměnná se definuje klíčovým slovem Shared, nebo je uvnitř modulu (statické třídy).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V tomhle případě by bylo asi nejvhodnější použít singleton.

http://objekty.vse.cz/Objekty/Vzory-Sing...

http://vbnotebookfor.net/2007/09/13/intr...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback