Označení v ListView   zodpovězená otázka

VB.NET, WinForms

Ahoj,

jsem zacatecnik, delam takovy mensi programek a potreboval bych pomoct s oznacenim hledaneho vyrazu v komponente ListView.

V dane komponente mam asi 12 sloupcu, potrebuji vyhledavat v prvnim sloupci, pod ListViewem mam TextBox a tlacitko Hledat. Jde o to, ze kdyz zmacknu tlacitko hledat, oznaci to perfektne, bez problemu, ale kdyz chci hledat podruhe, oznaci to to nove vyhledavane + k tomu prida i to, co jsem vyhledaval predtim.

Da se to stare vyhledavani/zvyrazneni nejak odstranit? Vygooglil jsem nejaky Me.listView1.SelectedItems.Clear()

Ale nejsem si jisty, kam ho dat.

Prikladam mnou sesmoleny kousek kodu:

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        For i = 0 To ListView1.Items.Count - 1
            If ListView1.Items(i).Text.Contains(TextBox1.Text) Then
                ListView1.Focus()
                ListView1.Items(i).Selected = True
            End If
        Next
    End Sub

Diky za pripadnou pomoc,

InFlamer

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

Zdravim, váš postup je správný, stačí umístit kod ListView1.SelectedItems.Clear() do úseku, kde je podmínka splněna.

PS: nezapomeňte, že ListView1.SelectedItems.Clear() musí být logicky ještě před ListView1.Items(i).Selected = True

;-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Hurá, už to jede. Diky moc moc moc. :)

A jeste bych se chtel zeptat, ze kdybych mel v ListView desitky, mozna stovky zaznamu a dam hledat, oznaci se mi to + to automaticky posune posuvnikem?

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

Zkuste pod řádek ListView1.Items(i).Selected = True napsat ListView1.SelectedItems(0).EnsureVisible() ;-)

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

Automaticky se Vám scrollbar neposune tam, kde je označená položka, to ale můžete zařídit právě výše uvedeným kodem ;-)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Diky moc. Vyzkousim. :)

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

To jsem zase já, ještě se naskytl jeden problém a to ten, že jsem se rozhodl, že chci hledat např. až v pátém sloupci [SubItems(4] a pokud nalezne shodu, tak aby označil položku v prvním sloupci (ve stejném řádku). Existuje nějaké řešení (jelikož jsem zjistil, že se dá označit jen v prvním sloupci)?

 Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        For i = 0 To ListView1.Items.Count - 1
            If ListView1.Items(i).Text.Contains(TextBox1.Text) Then
                ListView1.Focus()
                Me.ListView1.SelectedItems.Clear()
                ListView1.Items(i).Selected = True
                ListView1.SelectedItems(0).EnsureVisible()
            End If
        Next
    End Sub
nahlásit spamnahlásit spam 0 odpovědětodpovědět

U listView v okně Properties si nastavte vlastnost FullRowSelect na True. Tím by se měl označit celý řádek.

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

Jinak vyhledávání v ListView naleznete zde:

http://www.vbnet.cz/forum-tema--1813-vyh...

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

Diky moc.

nahlásit spamnahlásit spam 0 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