Ogni volta che si imposta la proprietà RichTextBox.Enabled
su false, il suo colore di sfondo viene automaticamente impostato su grigio in quanto è impostato sul colore nel colore di sistema impostato nel pannello di controllo. Come posso cambiare il suo colore in nero anche se l'ho impostato su disabilitato?Come modificare il colore di sfondo di una casella di testo RTF quando è disabilitato?
risposta
See: How to change the font color of a disabled TextBox?
[Edit - codice di esempio aggiunto]
richTextBox.TabStop = false;
richTextBox.ReadOnly = true;
richTextBox.BackColor = Color.DimGray;
richTextBox.Cursor = Cursors.Arrow;
richTextBox.Enter += richTextBox_Enter;
private void richTextBox_Enter(object sender, EventArgs e)
{
// you need to set the focus somewhere else. Eg a label.
SomeOtherControl.Focus();
}
o come en metodo di estensione (ho capito che non c'è bisogno di metterla in sola lettura in quanto l'evento Enter cattura qualsiasi ingresso):
public static class MyExtensions
{
public static void Disable(this Control control, Control focusTarget)
{
control.TabStop = false;
control.BackColor = Color.DimGray;
control.Cursor = Cursors.Arrow;
control.Enter += delegate { focusTarget.Focus(); };
}
}
Date un'occhiata a DrawStringDisabled Method. Dovrai sostituire il metodo OnPaint e quindi utilizzare il metodo DrawStringDisabled. Ma, se fossi al tuo posto, andrò con la risposta Mikael Svenson's.
Creare un Richtextbox personalizzato come di seguito Ciò produrrà un Richtextbox con un Backcolor trasparente. È quindi possibile posizionare questo controllo su un pannello opportunamente colorato.
Public Class MyRichTextBox
Inherits RichTextBox
<DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _
Shared Function LoadLibrary(ByVal lpFileName As String) As IntPtr
End Function
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
Get
Dim prams As CreateParams = MyBase.CreateParams
If LoadLibrary("msftedit.dll") <> IntPtr.Zero Then
prams.ExStyle = prams.ExStyle Or &H20 'Makes Transparent
prams.ClassName = "RICHEDIT50W"
End If
Return prams
End Get
End Property
della sua fine, ma il suo non è un brutto modo,
private void richTextBox1_ReadOnlyChanged(object sender, EventArgs e)
{
//just here instead of White select your color
richTextBox1.BackColor = Color.White;
}
private void Form1_Load(object sender, EventArgs e)
{
richTextBox1.ReadOnly = true;
}
Impostare la proprietà BackColor per il colore desiderato e quindi impostare la RichTextBox a sola lettura.
Es:
richTextBox.BackColor = Color.White;
richTextBox.ReadOnly = true;
Non funziona lo stesso, readonly consente ancora selezione, scorrimento, ecc. –
+1 perché nella mia situazione il comportamento di abilitazione/disabilitazione sembrava inaffidabile quando ShowSelectionMargin era impostato su True. –
ho appena trovato un ottimo modo per farlo. Dovrebbe funzionare con qualsiasi controllo:
public class DisabledRichTextBox : System.Windows.Forms.RichTextBox
{
// See: http://wiki.winehq.org/List_Of_Windows_Messages
private const int WM_SETFOCUS = 0x07;
private const int WM_ENABLE = 0x0A;
private const int WM_SETCURSOR = 0x20;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (!(m.Msg == WM_SETFOCUS || m.Msg == WM_ENABLE || m.Msg == WM_SETCURSOR))
base.WndProc(ref m);
}
}
Si può tranquillamente impostare Enabled = true e ReadOnly = false, e si comporterà come un marchio, impedendo messa a fuoco, l'input dell'utente, il cambiamento del cursore, senza essere in realtà disabilitato.
Vedere se funziona per voi. Saluti
- 1. Come usare jQuery per cambiare il colore di sfondo di una casella di testo?
- 2. Cambiare il colore di sfondo dell'input della casella di testo non funzionante quando vuoto
- 3. Modifica del colore di sfondo e del colore del testo in una casella di testo
- 4. Eclipse CDT codice disabilitato colore di sfondo
- 5. Qual è il colore di sistema del testo disabilitato?
- 6. Impossibile modificare il colore di sfondo barra di ricerca
- 7. come modificare il colore di sfondo del campo di testo UISearchBar e il colore del testo in ios8
- 8. Cambiare il colore di sfondo quando div casella di controllo è cliccato
- 9. Come modificare il colore di sfondo di un SFSafariViewController?
- 10. Come modificare il colore di sfondo dell'area informazioni su ImageCardView?
- 11. Come modificare il colore di sfondo del TextBox?
- 12. Come modificare il colore di sfondo della selezione ListBox?
- 13. Come modificare il colore di evidenziazione nella casella di completamento automatico in Eclipse
- 14. È possibile modificare il colore di sfondo di un controllo di modifica di sola lettura
- 15. Modificare il bordo Colore del riquadro di testo
- 16. Come cambiare il colore di sfondo su una casella di spunta di input con css?
- 17. Come posso cambiare il colore di <label> quando il suo ingresso è disabilitato?
- 18. Come cambiare il colore di sfondo dell'intestazione di una QTableView
- 19. cambia il colore del carattere nella casella di testo con CSS quando il valore è digitato nella casella
- 20. Qual è il colore di sfondo predefinito del browser quando si seleziona il testo?
- 21. Come modificare lo sfondo di TinyMCE?
- 22. Come modificare il colore di sfondo della finestra di dialogo di avviso predefinita di Android
- 23. Il colore dell'icona di notifica Android non viene modificato quando il colore di sfondo è bianco
- 24. Come modificare il colore di evidenziazione/colore di System.Windows.Forms.ToolStripButton quando selezionato?
- 25. Cambia colore del testo in base al colore di sfondo
- 26. Come si ottiene il colore di sfondo di una TextView?
- 27. Come posso modificare il colore di primo piano e di sfondo di un TableCell OpenXML?
- 28. WPF Come modificare il colore del testo dell'elemento selezionato nella casella di riepilogo quando la casella di riepilogo perde lo stato attivo
- 29. AlertDialog colore di sfondo
- 30. Come modificare il colore del testo di IcsSpinner in ActionBarSherlock?
non è la cosa che ho chiesto! – Badr
@moon: Sì, lo è. –
@moon: Sì, è necessario impostare il controllo in sola lettura e impostare i colori manualmente anziché disabilitarlo. La disattivazione di un controllo utilizzerà le impostazioni del sistema operativo per il modo in cui viene eseguito il rendering. –