DataGridView   otázka

VB.NET

1.)

Lze nějak v datagridu nastavit barevné odlišení sudých a lichých řádků bez toho, aniž bych po každé změně datového zdroje musel všechny řádky procházet a pozadí řádků měnit ručně ?

2.)

Zdrojem datagridu je DataTable, kde je sloupec deklarován jako Image. Potřeboval bych, aby se kurzor po vstupu na tento sloupeček změnil na cursors.Hand.

Děkuji předem

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

perfektna otazka prave som myslel na neco podobne ked som videl vas prispevok .. S prvim problemom vam nepomozem ,ale druhy si myslim ze ked kliknete na datagridview tak na pravo mate menu Settings a tam je moznost Cursor a v nej vyberte Hand alebo namiesto Default tam prepiste na Hand a malo by to fungovat ak som vas spravne pochopil :)

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

Ohledně prvního dotazu:

DatagridView má property AlternatingRowsDefaultCellStyle. Tato vlastnost slouží přesně k tomu co požadujete. Ve vlastnosti DefaultCellStyle si nastavíte obecně vzhled (barvu font apod.) vašeho DataGridViewu a ve vlastnosti AlternatingRowsDefaultCellStyle si nastavíte jak mají vypadat sudé řádky (můžete jim změnit ne jenom barvu pozadí ale třeba i písmo apod.) Je to velmi užitečná a užívaná vlastnost. Defaultně jsou položky v DefaultCellStyle a AlternatingRowsDefaultCellStyle nastaveny na stejné hodnoty, proto jsou sudé i liché řádky stejné.

Ohledně druhé otázky:

po vstupu - tím myslíte označení nějáké buňky (kliknutí) ve sloupci kde je ten image?

Pokud ano, neměl by to být problém, zkuste do události CellClik přidat kód, který zjistí jaký do jakého sloupce bylo kliknuto, pokud se bude jednat o sloupec s obrázkem, změňte kurzor. Třeba takto:

    Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

'předpokládejme že 3 sloupec je sloupec s obrázkama

        If e.ColumnIndex = 2 Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If

    End Sub

    Private Sub DataGridView1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGridView1.Leave
        Cursor = Cursors.Default
    End Sub

To nastavení defaultního cursoru v události DataGridView1_Leave je tam proto, aby tam uživateli nezůstala ručička pokud klikne na jiný control ve formuláři (třeba nějáké tlačítko).

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

Díky, první část je přesně to, co potřebuji.

Nicméně což se týče kurzoru, potřebuji, aby Cursor.Hand byl nastaven po přejetí myši přes požadovanou buňku, tedy resp. sloupec. Upozorňiji tím uživatele, že po kliknutí na tuto buňku se "něco" stane.

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