Diskuze: dynamická aktualizace comboboxu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, pokud to chceš aktualizovat pravidelně, přidej si timer, kde si nastavíš interval, který znovu zavolá metodu pro získání portů.
Ahoj Jardo
Souhlasím, tenhle způsob jsem vyzkoušel. Je třeba trošku poupravit kód ale
i pak je problém. Maže se vybraný port a při otevřeném comboboxu a
vybírání portu pomocí myši se ,,odznačuje,, právě vybraná položka.
viz. https://www.youtube.com/watch?…
private void timer1_Tick(object sender, EventArgs e)
{
comboBox1.Items.Clear();
ports = SerialPort.GetPortNames();
Array.Sort(ports);
foreach (string port in ports)
{
comboBox1.Items.Add(port);
Console.WriteLine(port);
}
}
Mám k dispozici pole portů, které získávam přes timer. Nejlepší by podle mě bylo porovnat, jestli se načtené porty v poli shodují s porty v comboboxu. Pokud by se neshodovaly, odebral by se port z comboboxu, který už v poli není a případně se nahradil jiným, který v poli je. Jak by šlo tohle provést, existuje metoda pro výpis celkového obsahu comboboxu který bych následně použil k porovnání?
Ahoj, to, co navrhuješ je určitě jedna z možností, ale udělal bych to tak, že timer použije nové pole, které porovná s původním a teprve pokud nebudou pole stejná, aktualizuje se combobox. Jednodušší mi však přijde zavolat ten timer nebo samotnou metodu pro získání portů kliknutím na rolovačku. Další možností by bylo ponechat vybraný port (selected) v proměnné aby nedošlo k přepsání vybraného portu. Když by se ti nedařilo, tak dej vědět a já ti pošlu kód.
Zkus nepoužívat cb.Items.Clear() a dělat jen rozdílové úpravy pomocí cb.Items.Add a cb.Items.Remove/RemoveAt.
Nebo můžeš místo Items použít DataSource a nahradit celou kolekci najednou. Před změnou si uchováš vybranou položku a po změně ji zkusíš nastavit zpět.
Ještě by to šlo vylepšit. Provést refresh comboboxu až poté co získá focus, ušetříš tak výkon potřebný na opakované získávání portů, které bude povětšinou zbytečné.
Ahoj
Pokoušel jsem o způsob srovnání dvou polí, pokud by byl obsah rozdílný,
pole se přepíše a aktualizuje v cb, ale narazil jsem.. Pokud není
připojený port, program padá.
private void timer1_Tick(object sender, EventArgs e)
{
ports = SerialPort.GetPortNames();
//Array.Sort(portss);
foreach (string port in ports)
{
if (ports[0] != null)
{
if (String.Equals(ports[0], portss[0]))
{
}
else
{
label2.Text = "probehlo";
comboBox1.Items.Clear();
comboBox1.Items.Add(port);
if (ports[0] != null)
{
comboBox1.SelectedItem = ports[0];
}
portss[0] = ports[0];
}
}
Nevadilo by ti poslat kód?
Zobrazeno 8 zpráv z 8.
