Wie kann man in Visual Basic 2010 die Farbe

… des ausgewählten Textes in einer TextBox ändern?
Ich habe schon alles versucht. Aber es klappt nichts.

Bei
TetxBox1.SelectedText = ColorDialog1.Color
zeigt der mir nen Fehler an und bei verschiedenen andren Befehlen auch.
Und
TextBox1.SelectedText.ForeColor = ColorDialog1.Color
klappt soweiso nicht ^^.
Wie geht es richtig?
Gruß

Hey Max,
ich hab jetzt leider nicht die VB Version 2010.
Aber wenn Du die folgenden Zeilen in dein Programm ganz oben einfügst und dann ne Schaltfläche „Command1“ und ein TextBox „Text1“ erstellst kannst Du mit der Schaltfläche den ColorDialog aufrufen und die Text Farbe verändern so wie du sie ausgewählt hast.

Private Declare Function ChooseColor_Dlg Lib „comdlg32.dll“ _
Alias „ChooseColorA“ ( _
lpcc As CHOOSECOLOR_TYPE) As Long

Private Type CHOOSECOLOR_TYPE
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As Long
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

’ Anwender kann alle Farben wählen
Private Const CC_ANYCOLOR = &H100
’ Nachrichten können „abgefangen“ werden
Private Const CC_ENABLEHOOK = &H10
’ Dialogbox Template
Private Const CC_ENABLETEMPLATE = &H20
’ Benutzt Template, ignoriert aber den Template-Namen
Private Const CC_ENABLETEMPLATEHANDLE = &H40
’ Vollauswahl aller Farben anzeigen
Private Const CC_FULLOPEN = &H2
’ Deaktiviert den Button zum Öffnen der Dialogbox-Erweiterung
Private Const CC_PREVENTFULLOPEN = &H4
’ Vorgabe einer Standard-Farbe
Private Const CC_RGBINIT = &H1
’ Hilfe-Button anzeigen
Private Const CC_SHOWHELP = &H8
’ nur Grundfarben auswählbar
Private Const CC_SOLIDCOLOR = &H80

Private Sub Command1_Click()
Dim CC_T As CHOOSECOLOR_TYPE, Retval As Long
Static BDF(16) As Long

’ Einige Farben vordefinieren (Benutzerdefinierte Farben)
BDF(0) = RGB(255, 0, 255)
BDF(1) = RGB(125, 125, 125)
BDF(2) = RGB(90, 90, 90)

With CC_T
.lStructSize = Len(CC_T) ’ Strukturgröße
.hInstance = App.hInstance ’ Anwendungs-Instanz
.hwndOwner = Me.hWnd ’ Fenster-Handle
.flags = CC_RGBINIT Or CC_ANYCOLOR Or CC_FULLOPEN Or _
CC_PREVENTFULLOPEN ’ Flags
.rgbResult = RGB(0, 255, 0) ’ Farbe voreinstellen
.lpCustColors = VarPtr(BDF(0)) ’ Benutzerdefinierte Farben zuweisen
End With

Retval = ChooseColor_Dlg(CC_T) ’ Dialog anzeigen

If Retval 0 Then
Me.BackColor = CC_T.rgbResult ’ gewählte Farbe als Hintergrund setzen
Else
MsgBox „Das Auswählen einer Farbe ist fehlgeschlagen,“ & _
„oder Sie haben Abbrechen gedrückt“, vbCritical, „Fehler“
End If
End Sub

Hoffe ich konnte Dir ein bisschen weiterhelfen. Würde mich über ein Feedback freuen ob es funktioniert hat oder nicht. Wenn Du Fragen hast, einfach melden :wink:
Grüßle Daniel und viel Spaß

… des ausgewählten Textes in einer TextBox ändern?

TetxBox1.SelectedText = ColorDialog1.Color
zeigt der mir nen Fehler an
TextBox1.SelectedText.ForeColor = ColorDialog1.Color

Hallo,
das Problem sollte nichts mit VB2010 zu tun haben.
In VB gilt eigentlich immer, dass man zunächst das Objekt bezeichnet, dann mit Punkt getrennt die Eigenschaft des Objektes, der dann über " = " ein Wert zugewiesen werden kann.
Jedoch gibt es auch Eigenschaften, die nur ausgegeben werden können. Die lassen sich nicht verändern.

Bezogen auf das konkrete Problem:

Eine Textbox kann zwar eine Vordergrundfarbe haben, aber nicht der „selectedText“. SelectedText liefert den im Eingabefeld ausgewählten/markierten Text zurück. Der SelectedText ist ein reiner Rückgabewert und kein Wert, der geändert werden kann. Erst recht hat die Eigenschaft „SelectedText“ nicht die Option eine Farbe zu besitzen. Die Farbe hat das Objekt „TextBox1“ und nicht der ausgewählte Text. D.h., hinter „.selectedText“ kann nichts geändert werden.

D.h., Du versuchst hier Dinge zu kombinieren, die nicht zusammen passen.

Wenn Du die Fordergrundfarbe modifizieren möchtest dann:

textbox1.foreColor = 123456 'Farbwert festlegen

Sofern der Farbwert des Textfeldes identisch belegt werden soll, wie die von einem anderen Feld (ColorDialog1), dann darauf achten, das die Eigenschaft dieses anderen Feldes korrekt angegeben wird. In der Regel lautet es eben nicht .COLOR sondern .FORECOLOR oder .BACKCOLOR oder .BORDERCOLOR

textbox1.foreColor = ColorDialog1.foreColor

Gruß
Ulrich

Nachtrag:
Bezogen auf die Frage, wie man die Farbe des ausgewählten Textes modifizieren kann die Antwort:

gar nicht.

Die Farbe des markierten Textes ist immer die Hintergrundfarbe und die Textfarbe wird zur Hintergrundfarbe.

D.h., es geht nicht, den markierten Text farblich anders zu gestalten, als es durch die .forecolor und .backcolor -Einstellungen festgelegt ist, eben dann nur invers.

Gruß
Ulrich

Sorry, ich weiß es leider auch nicht…

Es funtkioniert mit einer RichTextBox.
Einfach anstatt einer normalen Textbox eine RichTextBox hinzufügen.
Anschließend kann beispielsweise im Code per
RichTextBox1.SelectionColor = Color.Blue
die Schriftfarbe des markierten Textes verändert werden.

Sorry - habe ich mich noch nie mit befasst.
Vielleicht weiss jemand anderer einen Rat!

Sorry da kann ich dir nicht weiter helfen.

Cu Stefan

Sorry, keine Ahnung - Habe selbst nur eine Anfrage über VB gestellt.