Weet iemand welke eigenschap de tekstkleur instelt voor uitgeschakelde controle?
Ik moet wat tekst weergeven in een uitgeschakelde TextBox
en ik wil de kleur op zwart zetten.
Antwoord 1, autoriteit 100%
OPMERKING:zie het antwoord van Cheetah hieronder omdat het een voorwaarde identificeert om deze oplossing te laten werken. De BackColor
van de TextBox
instellen.
Ik denk dat je echt de TextBox
wilt inschakelen en de eigenschap ReadOnly
op true
wilt zetten.
Het is een beetje lastig om de kleur van de tekst in een uitgeschakelde TextBox
te wijzigen. Ik denk dat je waarschijnlijk de gebeurtenis OnPaint
moet subclasseren en overschrijven.
ReadOnly
zou u echter hetzelfde resultaat moeten geven als !Enabled
en u in staat stellen controle te houden over de kleur en opmaak van de TextBox
. Ik denk dat het ook nog steeds ondersteuning biedt voor het selecteren en kopiëren van tekst uit de TextBox
, wat niet mogelijk is met een uitgeschakelde TextBox
.
Een ander eenvoudig alternatief is om een Label
te gebruiken in plaats van een TextBox
.
Antwoord 2, autoriteit 87%
Bovendien moet u, om ervoor te zorgen dat ForeColor wordt uitgevoerd op een TextBox die is gemarkeerd met ReadOnly, expliciet de BackColor instellen. Als je wilt dat het nog steeds de standaard BackColor gebruikt, moet je de set expliciet maken, want de ontwerper is hier te slim voor zijn eigen bestwil. Het is voldoende om de BackColor op de huidige waarde in te stellen. Ik doe dit in de Load-gebeurtenis voor het formulier, zoals:
private void FormFoo_Load(...) {
txtFoo.BackColor = txtFoo.BackColor;
}
Antwoord 3, autoriteit 9%
Ik heb zojuist een geweldige manier gevonden om dat te doen. In mijn voorbeeld gebruik ik een RichTextBox, maar het zou moeten werken met elk besturingselement:
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);
}
}
Je kunt Enabled = true en ReadOnly = false veilig instellen, en het zal zich gedragen als een label dat focus, gebruikersinvoer, cursorverandering verhindert, zonder dat het daadwerkelijk wordt uitgeschakeld.
Kijk of het voor jou werkt.
Groeten
Antwoord 4, autoriteit 7%
hi
stel het alleen-lezen attribuut in op true vanaf de codekant of runtime niet vanaf de ontwerptijd
txtFingerPrints.BackColor = System.Drawing.SystemColors.Info;
txtFingerPrints.ReadOnly = true;
Antwoord 5, autoriteit 3%
Je kunt dit proberen.
Overschrijf de OnPaint-gebeurtenis van de TextBox.
protected override void OnPaint(PaintEventArgs e)
{
SolidBrush drawBrush = new SolidBrush(ForeColor); //Use the ForeColor property
// Draw string to screen.
e.Graphics.DrawString(Text, Font, drawBrush, 0f,0f); //Use the Font property
}
zet de ControlStyles op “UserPaint”
public MyTextBox()//constructor
{
// This call is required by the Windows.Forms Form Designer.
this.SetStyle(ControlStyles.UserPaint,true);
InitializeComponent();
// TODO: Add any initialization after the InitForm call
}
Of je kunt deze hack proberen
Stel in Gebeurtenis invoeren de focus
int index=this.Controls.IndexOf(this.textBox1);
this.Controls[index-1].Focus();
Dus je besturing is niet gefocust en gedraagt zich als uitgeschakeld.
Antwoord 6
Naast het antwoord van @spoon16 en @Cheetah, stel ik de eigenschap tabstop
altijd in op False in het tekstvak om te voorkomen dat de tekst standaard wordt geselecteerd.
U kunt ook zoiets als dit doen:
private void FormFoo_Load(...) {
txtFoo.Select(0, 0);
}
of
private void FormFoo_Load(...) {
txtFoo.SelectionLength = 0;
}
Antwoord 7
Gewoon inschakelen wijzigen en instellen op de gewenste kleur
private void TextBoxName_EnabledChanged(System.Object sender, System.EventArgs e)
{
((TextBox)sender).ForeColor = Color.Black;
}
Antwoord 8
Als u tekst wilt weergeven die niet kan worden bewerkt of geselecteerd, kunt u eenvoudig een label gebruiken
Antwoord 9
Het instellen van ‘Alleen lezen’ als ‘True’ is de gemakkelijkste methode.