因为只设置 readonly属性false的话,光标还是能在控件中点击,也能全选。
13 个解决方案
#1
enable=false
#2
做个隐藏控件比如一个TextBox tbHide;
//RichTextBox Enter 事件中
tbHide.Focus();
#3
可以这样,控制只能选0个字符:
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
richTextBox1.Select(richTextBox1.SelectionStart, 0);
}
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
richTextBox1.Select(richTextBox1.SelectionStart, 0);
}
#4
来看看,
ps:好久没挣分了,来挣 点分,
ps:好久没挣分了,来挣 点分,
#5
屏蔽RichTextBox的消息:可以将下面的代码加到你窗体Form1的后面,然后修改Designe文件,让
this.richTextBox1 = new PoorBox();
this.richTextBox1 = new PoorBox();
public class PoorBox : RichTextBox
{
const int DBCLCIK = 0x0203;//双击
const int GETFOCUS = 0x0007;//得到焦点
protected override void WndProc(ref Message msg)
{
if (msg.Msg == DBCLCIK || msg.Msg == GETFOCUS)
{
return;
}
base.WndProc(ref msg);
}
}
#6
在鼠标事件里设置:e.Handled=true;
或enable=false
或重写WndProc方法,捕获信息。
或enable=false
或重写WndProc方法,捕获信息。
#7
楼主的最终目标应该是防止复制吧,只控制不让选择、不让复制就够了吧。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
#8
复制和粘贴的两个常量
0x0301
0x0302
#9
我是想在richtextbox中鼠标一点击后,光标就消失,这样也就不会就选中文本了。
#10
这样试试,不过你一旦输入字符,光标又有了
[DllImport("user32", EntryPoint = "HideCaret")]
private static extern bool HideCaret(IntPtr hWnd);
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
HideCaret(((RichTextBox)sender).Handle);
}
#11
防止复制的话你可以复写ctrl+c和鼠标copy事件使他们无效化,最彻底的方法是干脆不要用richbox,用picturebox,图片显示点阵字
#12
请问不知如何针对特定的richtextbox进行控制?
#13
重写RichTextBox类,禁止复制。
public class NewTextBox : RichTextBox
{
protected override void WndProc(ref Message msg)
{
if (msg.Msg == 0x0300 || msg.Msg == 0x0301) return; // 禁止复制或剪切
base.WndProc(ref msg);
}
}
#1
enable=false
#2
做个隐藏控件比如一个TextBox tbHide;
//RichTextBox Enter 事件中
tbHide.Focus();
#3
可以这样,控制只能选0个字符:
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
richTextBox1.Select(richTextBox1.SelectionStart, 0);
}
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
richTextBox1.Select(richTextBox1.SelectionStart, 0);
}
#4
来看看,
ps:好久没挣分了,来挣 点分,
ps:好久没挣分了,来挣 点分,
#5
屏蔽RichTextBox的消息:可以将下面的代码加到你窗体Form1的后面,然后修改Designe文件,让
this.richTextBox1 = new PoorBox();
this.richTextBox1 = new PoorBox();
public class PoorBox : RichTextBox
{
const int DBCLCIK = 0x0203;//双击
const int GETFOCUS = 0x0007;//得到焦点
protected override void WndProc(ref Message msg)
{
if (msg.Msg == DBCLCIK || msg.Msg == GETFOCUS)
{
return;
}
base.WndProc(ref msg);
}
}
#6
在鼠标事件里设置:e.Handled=true;
或enable=false
或重写WndProc方法,捕获信息。
或enable=false
或重写WndProc方法,捕获信息。
#7
楼主的最终目标应该是防止复制吧,只控制不让选择、不让复制就够了吧。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
#8
复制和粘贴的两个常量
0x0301
0x0302
#9
我是想在richtextbox中鼠标一点击后,光标就消失,这样也就不会就选中文本了。
#10
这样试试,不过你一旦输入字符,光标又有了
[DllImport("user32", EntryPoint = "HideCaret")]
private static extern bool HideCaret(IntPtr hWnd);
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
HideCaret(((RichTextBox)sender).Handle);
}
#11
防止复制的话你可以复写ctrl+c和鼠标copy事件使他们无效化,最彻底的方法是干脆不要用richbox,用picturebox,图片显示点阵字
#12
请问不知如何针对特定的richtextbox进行控制?
#13
重写RichTextBox类,禁止复制。
public class NewTextBox : RichTextBox
{
protected override void WndProc(ref Message msg)
{
if (msg.Msg == 0x0300 || msg.Msg == 0x0301) return; // 禁止复制或剪切
base.WndProc(ref msg);
}
}