1

我有一个我需要用作我的 Windows 窗体应用程序需要的背景选择RichTextBox的标签。RichTextBox

我在禁用 时遇到了一个问题RichTextBox,它使BackColorRichTextBox变成了白色/灰色。我尝试使用以下代码:

ll.ForeColor = Color.LightGreen;
ll.Location = new Point(1, Form1.ActiveForm.Size.Height / 23 * 23);
ll.AutoSize = true;
ll.SelectionColor = Color.FromArgb(0, 0, 0);
ll.BorderStyle = BorderStyle.None;
ll.BackColor = Color.FromArgb(0, 0, 0);
ll.Multiline = false;
ll.ReadOnly = true;
ll.Enabled = false;
ll.SelectionBackColor = Color.Transparent;
ll.SelectAll();
ll.Font = new Font("ModeSeven", 12);

但我仍然得到这个...... http://i.imgur.com/j098Fl6.png

4

2 回答 2

1

我刚刚使用了readOnly并且没有设置Enabled属性以及属性并得到了这个:

在此处输入图像描述

我想这正是你想要的。

这是完整的代码

     this.richTextBox1.Location = new System.Drawing.Point(31, 12);
     this.richTextBox1.Name = "richTextBox1";
     this.richTextBox1.ReadOnly = true;
     this.richTextBox1.Size = new System.Drawing.Size(100, 96);
     this.richTextBox1.TabIndex = 0;
     this.richTextBox1.Text = "tsglksklsmkld";
     richTextBox1.ForeColor = Color.LightGreen;
     richTextBox1.SelectionColor = Color.FromArgb(0, 0, 0);
     richTextBox1.BorderStyle = BorderStyle.None;
     richTextBox1.BackColor = Color.FromArgb(0, 0, 0);
     richTextBox1.SelectionBackColor = Color.Transparent;
     richTextBox1.Font = new Font("ModeSeven", 12);
     richTextBox1.Multiline = false;

如果您希望它也无法选择,您可以执行以下操作:

this.richTextBox1.SelectionChanged += new System.EventHandler(this.richTextBox1_SelectionChanged);

在处理程序中:

  private void richTextBox1_SelectionChanged(object sender, EventArgs e)
  {
     richTextBox1.Select(0,0);
  }
于 2013-08-12T08:59:42.090 回答
0

Windows 带有主题,当您禁用窗体上的控件时,该控件将根据当前主题显示其状态。
您无法更改禁用控件的外观,因为它将始终根据当前主题运行。

但是,您可以做的是创建一个自定义控件,从 RTB 继承并相应地定义您的Paint-event。

请参阅此处获取线程。

于 2013-08-12T08:58:28.110 回答