如何使richtextbox控件失去焦点?

welcome316 2009-09-04 11:58:15
我现在想在richtextbox中用鼠标点击时,失去光标,双击也不能选择内容。
因为只设置 readonly属性false的话,光标还是能在控件中点击,也能全选。
...全文
1615 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sohighthesky 2009-09-04
  • 打赏
  • 举报
回复
屏蔽RichTextBox的消息:可以将下面的代码加到你窗体Form1的后面,然后修改Designe文件,让
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);
}
}
sohighthesky 2009-09-04
  • 打赏
  • 举报
回复
来看看,
ps:好久没挣分了,来挣 点分,
lzsh0622 2009-09-04
  • 打赏
  • 举报
回复
可以这样,控制只能选0个字符:
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
richTextBox1.Select(richTextBox1.SelectionStart, 0);
}
assky124 2009-09-04
  • 打赏
  • 举报
回复
做个隐藏控件比如一个TextBox tbHide;


//RichTextBox Enter 事件中
tbHide.Focus();
huangyuelei01 2009-09-04
  • 打赏
  • 举报
回复
enable=false
lzsh0622 2009-09-04
  • 打赏
  • 举报
回复
重写RichTextBox类,禁止复制。

public class NewTextBox : RichTextBox
{
protected override void WndProc(ref Message msg)
{
if (msg.Msg == 0x0300 || msg.Msg == 0x0301) return; // 禁止复制或剪切
base.WndProc(ref msg);
}
}
welcome316 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sohighthesky 的回复:]
引用 7 楼 lzsh0622 的回复:
楼主的最终目标应该是防止复制吧,只控制不让选择、不让复制就够了吧。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。

复制和粘贴的两个常量
0x0301
0x0302
[/Quote]
请问不知如何针对特定的richtextbox进行控制?
prometheusstar 2009-09-04
  • 打赏
  • 举报
回复
防止复制的话你可以复写ctrl+c和鼠标copy事件使他们无效化,最彻底的方法是干脆不要用richbox,用picturebox,图片显示点阵字
qlzf11140820 2009-09-04
  • 打赏
  • 举报
回复
这样试试,不过你一旦输入字符,光标又有了
[DllImport("user32", EntryPoint = "HideCaret")]
private static extern bool HideCaret(IntPtr hWnd);
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
HideCaret(((RichTextBox)sender).Handle);
}
welcome316 2009-09-04
  • 打赏
  • 举报
回复
我是想在richtextbox中鼠标一点击后,光标就消失,这样也就不会就选中文本了。
sohighthesky 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lzsh0622 的回复:]
楼主的最终目标应该是防止复制吧,只控制不让选择、不让复制就够了吧。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
[/Quote]
复制和粘贴的两个常量
0x0301
0x0302
lzsh0622 2009-09-04
  • 打赏
  • 举报
回复
楼主的最终目标应该是防止复制吧,只控制不让选择、不让复制就够了吧。
如果控制不得到焦点,翻页功能也就没了,第1页后的文字翻不出来。
wuyq11 2009-09-04
  • 打赏
  • 举报
回复
在鼠标事件里设置:e.Handled=true;
或enable=false
或重写WndProc方法,捕获信息。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧