Oppure

Loading
28/10/21 7:23
alip1
Grazie fantastico... mi hai insegnato in un attimo tantissimo veramente grazie a te ma anche agli altri..

Marco scusami volevo farti una ultima domanda ( spero l'ultima):
nella linea di codice (e ovviamente anche nelle altre)
g.DrawString(linea(0), New Font(Font, FontStyle.Bold), colore1, e.Node.Bounds)


l'oggetto Font che passi a New Font(Font,...) a quale font si riferisce a quello impostato in progettazione alla TVAtt o ad un font generico.. nel caso potrei scrivere così:
g.DrawString(linea(0), New Font(TVATT.Font, FontStyle.Bold), colore1, e.Node.Bounds)


Di nuovo grazie 1000
aaa
28/10/21 8:32
Thejuster
Font si riferisce al font impostato sulla proprietà del Controllo TreeView.

Ma volendo puoi dare un font diverso esempio:


new Font("Arial",12);

mire.forumfree.it/ - Mire Engine
C# UI Designer
28/10/21 9:02
Carlo
Postato originariamente da alip1:

l'oggetto Font che passi a New Font(Font,...) a quale font si riferisce a quello impostato in progettazione alla TVAtt o ad un font generico.. nel caso potrei scrivere così:
g.DrawString(linea(0), New Font(TVATT.Font, FontStyle.Bold), colore1, e.Node.Bounds)


Di nuovo grazie 1000


Hai perfettamente ragione, con il codice che ti ho postato, il font che viene usato è quello del form.
Con la tua modifica invece quello della TreeView.
TVATT.Font lo devi mettere su tutte le righe di codice dove ora c'è solo Font

ATTENZIONE, alcuni tipi di font non supportano il bold da codice con l'istruzione: FontStyle.Bold, se li usi riceverai un errore.
in programmazione tutto è permesso
28/10/21 11:29
alip1
Postato originariamente da Carlo:

Postato originariamente da alip1:

l'oggetto Font che passi a New Font(Font,...) a quale font si riferisce a quello impostato in progettazione alla TVAtt o ad un font generico.. nel caso potrei scrivere così:
g.DrawString(linea(0), New Font(TVATT.Font, FontStyle.Bold), colore1, e.Node.Bounds)


Di nuovo grazie 1000


Hai perfettamente ragione, con il codice che ti ho postato, il font che viene usato è quello del form.
Con la tua modifica invece quello della TreeView.
TVATT.Font lo devi mettere su tutte le righe di codice dove ora c'è solo Font

ATTENZIONE, alcuni tipi di font non supportano il bold da codice con l'istruzione: FontStyle.Bold, se li usi riceverai un errore.


Grazie uso un font classico. Invece mi ritrovo con un nuovo problema cioé ora quando seleziono un nodo l'evidenziatore non mi consente di leggere il testo in quando molto scuro. ti posto le due immagini come vedevo prima e come vedo ora.
Poiché non trovo alcuna proprietà della TreeView che mi consenta di settare il colore di evidenziazione del nodo selezionato, é possibile farlo in qualche modo?
Grazie di nuovo
aaa
28/10/21 11:30
alip1
Postato originariamente da Carlo:

Postato originariamente da alip1:

l'oggetto Font che passi a New Font(Font,...) a quale font si riferisce a quello impostato in progettazione alla TVAtt o ad un font generico.. nel caso potrei scrivere così:
g.DrawString(linea(0), New Font(TVATT.Font, FontStyle.Bold), colore1, e.Node.Bounds)


Di nuovo grazie 1000


Hai perfettamente ragione, con il codice che ti ho postato, il font che viene usato è quello del form.
Con la tua modifica invece quello della TreeView.
TVATT.Font lo devi mettere su tutte le righe di codice dove ora c'è solo Font

ATTENZIONE, alcuni tipi di font non supportano il bold da codice con l'istruzione: FontStyle.Bold, se li usi riceverai un errore.


Grazie uso un font classico. Invece mi ritrovo con un nuovo problema cioè ora quando seleziono un nodo l'evidenziatore non mi consente di leggere il testo in quando molto scuro. ti posto le due immagini come vedevo prima e come vedo ora.
Poiché non trovo alcuna proprietà della TreeView che mi consenta di settare il colore di evidenziazione del nodo selezionato, é possibile farlo in qualche modo?
Grazie di nuovo
Ultima modifica effettuata da alip1 28/10/21 11:32
aaa
28/10/21 11:34
alip1
invece prima l'evidenziatore si mostrava così:
aaa
28/10/21 19:00
Carlo
qualsiasi colore scegli per la selezione, comunque ti dovrai scontrare con la scelta dei colori che siano ben visibili sia con il selezionato che senza

così ti piace?
il font per la treeview da progettazione ho usato: Century Gothic, normale, 10

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TVAtt.DrawMode = TreeViewDrawMode.OwnerDrawText
        AddHandler TVAtt.DrawNode, AddressOf TVAtt_drawNode
        TVAtt.BackColor = Color.FromArgb(64, 64, 64)
        TVAtt.LineColor = Color.White
    End Sub

    Private Sub TVAtt_drawNode(sender As Object, e As DrawTreeNodeEventArgs)

        Dim g As Graphics = e.Graphics
        Dim colore1 As Brush = Brushes.White
        Dim colore2 As Brush = Brushes.White
        Dim linea = e.Node.Text.Split(";"c)
        Dim Size As SizeF
        e.Node.BackColor = Color.Black
        If e.Node.Bounds.X = 0 Then Exit Sub

        If linea.GetUpperBound(0) > 1 Then
            Select Case linea(2).ToLower().Trim()
                Case "red"
                    colore1 = Brushes.Red

                Case "gray"
                    colore1 = Brushes.Gray

                Case "green"
                    colore1 = Brushes.LightGreen

                Case "blue"
                    colore1 = Brushes.RoyalBlue

                Case "yellow"
                    colore1 = Brushes.Gold

                Case "cyan"
                    colore1 = Brushes.Cyan

                Case "black"
                    colore1 = Brushes.Black

                Case "orange"
                    colore1 = Brushes.Orange

                Case Else
                    colore1 = Brushes.White
            End Select
            If linea.GetUpperBound(0) > 2 AndAlso linea(3).ToLower.Trim = "true" Then
                Size = g.MeasureString(linea(0), New Font(TVAtt.Font, FontStyle.Bold))
                g.DrawString(linea(0), New Font(TVAtt.Font, FontStyle.Bold), colore1, e.Node.Bounds)
            Else
                Size = g.MeasureString(linea(0), TVAtt.Font)
                g.DrawString(linea(0), TVAtt.Font, colore1, e.Node.Bounds)
            End If
        End If

        If linea.GetUpperBound(0) > 3 Then
            Select Case linea(4).ToLower().Trim()
                Case "red"
                    colore2 = Brushes.Red

                Case "gray"
                    colore2 = Brushes.Gray

                Case "green"
                    colore2 = Brushes.LightGreen

                Case "blue"
                    colore2 = Brushes.RoyalBlue

                Case "yellow"
                    colore2 = Brushes.Gold

                Case "cyan"
                    colore2 = Brushes.Cyan

                Case "black"
                    colore2 = Brushes.Black

                Case "orange"
                    colore2 = Brushes.Orange

                Case Else
                    colore2 = Brushes.White
            End Select
            If linea.GetUpperBound(0) > 4 AndAlso linea(5).ToLower.Trim = "true" Then
                g.DrawString(linea(1), New Font(TVAtt.Font, FontStyle.Bold), colore2, e.Node.Bounds.X + Size.Width + 2, e.Node.Bounds.Y)
            Else
                g.DrawString(linea(1), TVAtt.Font, colore2, e.Node.Bounds.X + Size.Width + 2, e.Node.Bounds.Y)
            End If
        End If

        If linea(0) <> "" And linea.GetUpperBound(0) = 0 Then
            g.DrawString(linea(0), TVAtt.Font, colore1, e.Node.Bounds.X, e.Node.Bounds.Y)
        End If
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim treeNode1 As New TreeNode("PrimoNodo ")
        treeNode1.Nodes.Add(" testo1Arancio;testo2Giallo;orange;true;yellow;true")
        treeNode1.Nodes.Add(" testo1Rosso;testo2Blue;red;false;blue;true")
        treeNode1.Nodes.Add(" testo1Bianco;testo2Grigio;white;true;gray;false")
        TVAtt.Nodes.Add(treeNode1)

        Dim treeNode2 As New TreeNode("SecondoNodo ")
        treeNode2.Nodes.Add(" testo1Verde;testo2Giallo;green;false;yellow;false")
        treeNode2.Nodes.Add(" testo1Rosso;testo2Blue;red;true;blue;false")
        treeNode2.Nodes.Add(" testo1Nero;testo2Grigio;black;false;gray;true")
        TVAtt.Nodes.Add(treeNode2)

        TVAtt.Nodes.Add(" testoStandard")
        TVAtt.Nodes.Add(" testoStandard")

        Dim treeNode3 As New TreeNode("TerzoNodo ")
        treeNode3.Nodes.Add(" Testo;123; green;false; red")
        treeNode3.Nodes.Add(" Testo;456; green;false; red;True")
        treeNode3.Nodes.Add(" Testo;789; green;false; red;True")
        Dim treeNode4 As New TreeNode("QuartoNodo ")
        treeNode4.Nodes.Add(" testo1Verde;testo2Giallo;green;true;yellow;true")
        treeNode4.Nodes.Add(" testo1Rosso;testo2Nero;red;false;black;true")
        treeNode4.Nodes.Add(" testo1Bianco;testo2Arancio;white;true;orange;false")
        treeNode3.Nodes.Add(treeNode4)
        TVAtt.Nodes.Add(treeNode3)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If TVAtt.Nodes.Count > 2 Then
            TVAtt.Nodes.Item(3).Text = " TV scadenza;-123-;cyan;false;red;true"
        End If
    End Sub
End Class


naturalmente si può anche intercettare la selezione e cambiare i colori del testo selezionato
Ultima modifica effettuata da Carlo 28/10/21 19:56
in programmazione tutto è permesso
29/10/21 8:01
alip1
Grazie Marco

ho ripreso il tuo esempio ma ciò che ottengo è come l'immagine che ti allego. ho utilizzato sia x il form che x la TVAtt il font century ghotic 10 come hai suggerito (anche se poi nelle corrispondenti proprietà;) mi ritrovo con 9.75pt) la visibilità e leggibilità non è come la tua. anche la selezione del nodo interessato è evidenziato in modo diverso dal tuo eppure ho fatto un semplice copiaincolla!!
Ma secondo te dopo aver impostato come prima (sfondo bianco , forecolor=blue x i nodi standard e blue + rosso x i nodi con valori numerici, non è proprio possibile, non so, intercettando qualche evento corrispondente e cambiare in qualche modo i colori di evidenziano solo x i nodi con i valori numerici (pensavo agli eventi beforeselect, afterselect, NodeMouseClick)??
Grazie di nuovo... mi pare che l'argomento è particolarmente interessante come le relative soluzioni proposte.
Buon lavoro e Buona giornata
Ultima modifica effettuata da alip1 29/10/21 8:09
aaa