Zalamování řádků v ListView   zodpovězená otázka

Komponenty

Zdravím,

nevíte zda je možné (a pokud ano tak jak) donutit komponentu ListView aby zalamovala řádky?

Komponentu používám k zobrazování nějákých novinek v úvodu aplikace a její struktura je následující:

komponenta má 3 sloupce. V prvním je zobrazena ikona podle důležitosti zprávy, ve druhém je datum a ve třetím samotný text. Vlastnost View mám nastavenou na Details a LabelWrap na True.

Přesto se mi řádky nezalamují (potřeboval bych když je delší text ve třetím sloupci, aby se podle něj roztáhl celý řádek tak, aby se tam text vešel celý). Přiznávám že jsem tuto komponentu doteď nepoužíval a nevím zda po ní nechci něco co neumí. Zvažoval jsem u použití dataGridViewu ale ListView mi přišel vhodnější.

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

ListView to neumí (LabelWrap funguje pouze pokud je v režimu LargeIcons, ne Details), pracovat s DataGridViewem je zase mnohem složitější. Rozhodnutí je na vás, já bych v tomto případě asi ponechal ListView a do sloupců doplnil ToolTipy které zobrazí celý text v buňce včetně zalamování.

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

Tak jsem se nakonec rozhodl použít dataGridView. Zalamování se chová přesně jak potřebuju a vkládání dat do něj je hodně podobné jako do ListView. A po chvilce laborování s property jsem dosáhl požadovaného vzhledu.

Díky za reakci

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

Dobrý den,

je nějak možné ten toolTip zobrazovat pro každý sloupec jiný? Resp. pro subItem? Nebo je to možné udělat pouze pro celý řádek?

Díky,

PetrS

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

Bohužel jen pro celý řádek.

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

Ve vb6 bylo možné využít subclasing a API

pro zobrazení tooltipu k items i subitems

prvku litview, nelze podobně i ve vb.net?

...

Nebo postačí událost mousemove a settooltip?

http://www.rajputbrotherhood.com/visual-...

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

Zobrazení tooltipu u listitems i subitems

(pomocí ListViewHitTestInfo)

Form1 s vloženým prvkem ListView1 :

(view=details, sloupce viz. link výše)

Public Class Form1
    Inherits System.Windows.Forms.Form
    Private tt As ToolTip
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        tt.Dispose()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        tt = New ToolTip()
    End Sub

    Private Sub ListView1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.MouseLeave
        If tt.Active Then tt.Hide(Me.ListView1)
    End Sub

    Private Sub ListView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseMove
        Dim lvhti As ListViewHitTestInfo
        lvhti = ListView1.HitTest(e.X, e.Y)
        If Not lvhti Is Nothing Then
            Dim s As String = ""
            If Not lvhti.SubItem Is Nothing Then
                s = lvhti.SubItem.Text
                If tt.GetToolTip(Me.ListView1) <> s Then
                    tt.Show(s, Me.ListView1, lvhti.SubItem.Bounds.Left, lvhti.SubItem.Bounds.Top)
                End If
            Else
                If tt.Active Then tt.Hide(Me.ListView1)
            End If
        Else
            If tt.Active Then tt.Hide(Me.ListView1)
        End If
    End Sub
End Class

Jak by šlo zobrazit tooltip pouze pro případy, kdy

není vidět celý text?

Jak zjistit, zda je u item nebo subitem zobrazen

celý text nebo jen částečně následovaný... ?

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

Zdá se, že příspěvek zapadl, neboť je označen

jako vyřešený, ale nechci zakládat nové téma.

Myslím, že cesta ke zjištění šířky textu je přes jeho

vykreslení ve stejném fontu jaký je použitý v listview,

poté porovnat s šířkou sloupce, resp. label části.

Potýkám se s nezdarem a zkouším zda-li někdo nepořešil...

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