2013-08-12 54 views
1

我有一個RichTextBox,我需要作爲RichTextBox的標籤使用背景選擇,我需要我的Windows窗體應用程序。如何禁用時刪除RichTextBox的灰色/白色BackColor?

我在禁用RichTextBox時遇到問題,它使RichTextBoxBackColor變成白色/灰色。 我曾嘗試使用下面的代碼嘗試:

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

回答

1

我剛剛使用的readOnly,而不是設置Enabled屬性以及屬性和得到這個:

enter image description here

這是你想要什麼,我認爲。

這裏是完整的代碼

 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); 
    } 
+0

我不不會讓RichTextBox成爲可選擇或可編輯的,就像標籤一樣。這就是爲什麼我禁用啓用功能。 –

+0

@DanielJones我編輯了我的答案,現在不能選擇 –

+0

您刪除的方式仍然顯示光標。更好的解決方案是防止重點。像這樣:分配Enter事件'void richTextBox1_Enter(object sender,EventArgs e){SelectNextControl((Control)sender,true,true,true,true); }'並且設置光標:'richTextBox1.Cursor = Cursors.Default;' – x4rf41

0

Windows自帶的主題,當你在窗體上禁用控件,該控件將顯示根據其狀態到當前的主題。
您無法更改禁用控件的外觀,因爲它總是按照當前主題行事。

但是,您可以執行的操作是創建自定義控件,從RTB繼承並相應地定義您的Paint事件。

請參閱here的一個線程。