Barva buňky v TableLayoutPanel   otázka

VB.NET, WinForms

Zdravím,

existuje nějakej jednoduchej způsob jak měnit barvu jednotlivých buněk v TableLayoutPanel?

Mám tento kód:

Private Sub TableLayoutPanel1_CellPaint(ByVal sender As Object, ByVal e As  System.Windows.Forms.TableLayoutCellPaintEventArgs) Handles TableLayoutPanel1.CellPaint
        If e.Row = 0 Then
            If e.Column = 0 Then
                e.Graphics.FillRectangle(Brushes.Red, e.CellBounds)
            Else
                e.Graphics.FillRectangle(Brushes.Green, e.CellBounds)
            End If
        Else
            If e.Column = 0 Then
                e.Graphics.FillRectangle(Brushes.Blue, e.CellBounds)
            Else
                e.Graphics.FillRectangle(Brushes.Yellow, e.CellBounds)
            End If
        End If
    End Sub

ale nevím, jak ho vyvolat třeba kliknutím na tlačítko.

Díky

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

Následující kód zjistí na jaké buňce bylo kliknuto a vybarví ji na červenou

	Private _Clicked As Boolean
	Private Sub TableLayoutPanel1_CellPaint(ByVal sender As Object, ByVal e As System.Windows.Forms.TableLayoutCellPaintEventArgs) Handles TableLayoutPanel1.CellPaint
		If _Clicked AndAlso ColInd = e.Column AndAlso RowInd = e.Row Then
			e.Graphics.FillRectangle(Brushes.Red, e.CellBounds)
			_Clicked = False
		End If
	End Sub

	Dim RowInd, ColInd As Integer
	Private Sub TableLayoutPanel1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TableLayoutPanel1.MouseClick
		Dim ColPos As Integer
		Dim RowPos As Integer
		Label3.Text = e.Location.ToString
		Dim ColWidths(), RowHeights() As Integer
		ColWidths = TableLayoutPanel1.GetColumnWidths()
		RowHeights = TableLayoutPanel1.GetRowHeights()
		'zjisteni aktualni bunky
		For i = 0 To ColWidths.Length - 1
			ColPos = ColPos + ColWidths(i)
			If e.X < ColPos Then
				ColInd = i
				Exit For
			End If
		Next
		For i = 0 To RowHeights.Length - 1
			RowPos = RowPos + RowHeights(i)
			If e.Y < RowPos Then
				RowInd = i
				Exit For
			End If
		Next

		Label4.Text = New Point(ColInd, RowInd).ToString
		_Clicked = True
		TableLayoutPanel1.Refresh()
	End Sub

při dalším kliknutí se barva vrátí zpět. Aby buňka zůstala obarvena, v _MouseClick by se musela ukládat vazba ColInd,RowInd,barva

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