RichTextBox を「ReadOnly」に設定しても、埋め込みオブジェクト (数式など) をダブルクリックして編集することはできません。コントロールを無効にすることはできますが、背景が灰色になり (BackColor で変更することはできません)、スクロールする方法がありません。派生クラスで OnDoubleClick をオーバーライドしようとしましたが、成功しませんでした。
1920 次
4 に答える
3
解決策を見つけました!:) 派生クラスでは:
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0203) // WM_LBUTTONDBLCLK
{
// Do nothing
}
else
{
base.WndProc(ref m);
}
}
于 2009-07-19T12:58:35.447 に答える
2
同様の問題があり、Entrase からの回答は良いスタートでした。残念ながら、コントロールではテキストを選択して削除することができました。私は次のコードを使用して終了しました:
Public Class ReadOnlyRichTextBox : Inherits Windows.Forms.RichTextBox
Protected mOkayKeys As Windows.Forms.Keys() = {Windows.Forms.Keys.Up, Windows.Forms.Keys.Down, Windows.Forms.Keys.PageUp, Windows.Forms.Keys.PageDown}
Private Sub ReadOnlyRichTextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Control And (e.KeyCode = Windows.Forms.Keys.C) Then
Exit Sub
End If
If Not mOkayKeys.Contains(e.KeyCode) Then e.Handled = True
End Sub
Private Sub ReadOnlyRichTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
e.Handled = True
End Sub
Private Sub ReadOnlyRichTextBox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp
If e.Control And (e.KeyCode = Windows.Forms.Keys.C) Then
Exit Sub
End If
If Not mOkayKeys.Contains(e.KeyCode) Then e.Handled = True
End Sub
Protected Overrides Sub WndProc(ByRef m As Windows.Forms.Message)
If (m.Msg = &H203) Then ' WM_LBUTTONDBLCLK=0x0203
' Do nothing
Else
MyBase.WndProc(m)
End If
End Sub
End Class
于 2012-05-10T19:17:56.353 に答える
0
これは次のように行うことができます
1)RichTextBoxプロパティのReadOnlyをtrueに設定します
2)[プロパティ]->[外観]->[BackColor ]に移動し、色をウィンドウとして設定します
于 2012-03-19T04:43:27.623 に答える
0
うーん... ダブルクリックで Sellength を 0 に設定してみてください。読み取り専用/ロックされたプロパティはありませんか?
于 2009-07-19T12:38:35.033 に答える