LIstView - vyvolání události při kliknutí na prázdný řádek   otázka

VB.NET, WinForms

Zdravím, můj dotaz se týká VB2010 a komponenty listview. Potřeboval bych přiřadit proceduru situaci kdy uživatel klikne na prázdný řádek (pod položkami). Událost ListView1_DoubleClick se vyvolá vždy jen pokud je kliknuto na některý řádek s daty, doubleclick do prázdného prostoru nereaguje.

Je to vůbec možné udělat??

Díky za odpověď!!

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

Neříkám, že to nejde, ale hlavně k čemu by to bylo?

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

k přidání nového záznamu. nyní to mám navázáno na tlačitko, což mi přijde zbytečné..

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

Přidání nového záznamu poklepáním do něj?! Takovou zrůdnost prosím vypusťte z hlavy, odporuje to úplně všemu v oblasti návrhu uživatelského rozhraní...

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

OK beru , muzu to nechat na tlacitku nebo vyresit jinak. Kazdopadne jsem tomu uz venoval nejakou energii a tak by me skutecne zajimalo (zvedavost mi prosim neupirejte) jestli a jak je mozno vyvolat udalost double click pri poklepani na prazdne misto v komponente listview. Pokud to nejde, fajn, pokud jde jak? Nejsem programator, zivim se jinak, VB delam pro zabavu, tak me nekamenujte :-)

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

Ptáte se:tak by me skutecne zajimalo (zvedavost mi prosim neupirejte) jestli a jak je mozno vyvolat udalost double click pri poklepani na prazdne misto v komponente listview

Podíval jsem se k tomu Microsoft:The mouse pointer must be over a child object (TreeNode or ListViewItem)

Tedy dvojklik mimo položku ListView nefunguje. Funguje však MouseDown a MouseUp

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

Samozřejmě že funguje, jen nemá podporu standardních .NET událostí. Je potřeba se zavrtat do okenní procedury a hlídat příslušnou WM zprávu...

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

normálně to v události oIFujte.

nahlásit spamnahlásit spam -2 / 2 odpovědětodpovědět

No ono je to trochu slozitejsi (teda asi jen pro me). ProceduraListView1_DoubleClick totiz vubec nereaguje na to kdyz provedu double click jinde nez na radku s daty. Jinymi slovy, pokud je listview prazdny tak procedura:

Private Sub ListView1_DoubleClick

MsgBox("doubleclick")

End Sub

Nefunguje..

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

Private Sub ListView6_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView6.MouseDown
        If e.Button <> Windows.Forms.MouseButtons.Right Then Return
        If ListView6.SelectedItems.Count = 0 Then Exit Sub
        Dim selectedItem = ListView6.GetItemAt(e.X, e.Y)
        If selectedItem IsNot Nothing Then
            Dim dlg As New Dialog1()
            ...
            dlg.ComboBox1.Items.Add("něco")
            ...
            dlg.TextBox1.Enabled = True
            ...
            dlg.TextBox1.Text = (ListView1.SelectedItems(0).SubItems(0).Text)
            ...
            If dlg.ShowDialog() = DialogResult.OK Then
                Dim nejakejTXT As String = dlg.TextBox1.Text
                ...
                Dim cmbox As String = dlg.ComboBox1.Text
                ...
                ListView6.SelectedItems(0).SubItems(0).Text = nejakejTXT
                ListView6.SelectedItems(0).SubItems(1).Text = cmbox

            End If
        End If
    End Sub

Pokud máte u ListView zapnutý Checkboxy, tak doporučuju použít klikání na pravé tlačítko myši. Je to z důvodu, že když kliknete na řádek, tak se neodškrkne zaškrknutý Checkbox.

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

Pokud jen chcete Přidávat novou položku, tak stačí do události MouseDoubleclick u ListView vložit

Me.Button1_Click(True, e)

Jestli jsem to správně pochopil tak zakládáte novou položku pomocí tlačítka a chcete jí zakládat dvojklikem myši.

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