C#,Winform如何做出显示文字没有焦点但是可以复制的效果?类似网页。 200

通常我都只是用个textbox,做成只读,但是很难看,类似网页上的文字显示是怎么做到的呢?或者.net有无自带的控件可以实现呢?... 通常我都只是用个textbox,做成只读,但是很难看,类似网页上的文字显示是怎么做到的呢?或者.net有无自带的控件可以实现呢? 展开
 我来答
罗宾汉王爵
2013-07-23 · TA获得超过240个赞
知道答主
回答量:116
采纳率:0%
帮助的人:28.5万
展开全部
using System.Runtime.InteropServices;//加这个命名空间
namespace SY1
{

public partial class Form1 : Form
{
[DllImport("user32.dll", EntryPoint = "HideCaret")]

public static extern bool HideCaret(IntPtr hWnd);//用这个API

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{

}

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
IntPtr hWnd = textBox1.Handle;
HideCaret(hWnd);//获得焦点时调用
}

}
}

然后把TextBox的边框设成None ,改成只读就可以了。
还有一个不用API的变通的办法,
就是你再放一个隐藏的textBox2在form里
然后
private void textBox1_MouseUp(object sender, MouseEventArgs e)
{
textBox2.Focus();
}

private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
textBox2.Focus();
}
也能达到你说的目的,但不是一个好办法。

另外不明白你为什么不用API现成的方法,而要自己去写。
说白textBox2.Focus()也是API,只不过.net给你封装好了可以直接用罢了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syuesw
2013-08-01 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:99.6万
展开全部
非常简单,你直接放一个webBrowser1控件,然后
webBrowser1.DocumentText = "just a test";
webBrowser1.ScrollBarsEnabled = false;
就可以了。
更多追问追答
追问
那我就是问webBrowser的效果是怎么做出来的。
追答
WebBrowser是WinForm的控件之一,直接拉一个控件到WinForm窗体,加上上面的两句代码就可以达到你想要的效果。
其基本原理是把系统自带的IE窗口嵌入到webBrowser控件中,以呈现你所需的页面。
至于IE的解析过程,本身是极其复杂的,只不过它被优化到效率特别快而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
biubiubiubiubiu5biu
2013-07-23 · TA获得超过1647个赞
知道小有建树答主
回答量:1126
采纳率:0%
帮助的人:1166万
展开全部
using System.Runtime.InteropServices;//加这个命名空间
namespace SY1
{

public partial class Form1 : Form
{
[DllImport("user32.dll", EntryPoint = "HideCaret")]

public static extern bool HideCaret(IntPtr hWnd);//用这个API

public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{

}

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
IntPtr hWnd = textBox1.Handle;
HideCaret(hWnd);//获得焦点时调用
}

}
}

然后把TextBox的边框设成None ,改成只读就可以了。
不谢~
更多追问追答
追问
请看我另外一个追问,虽然说你会用这个api说明你确实很厉害,但是我已经说了不要用api来修改textbox了,最好是继承自control的控件。
追答
还有一个不用API的变通的办法,
就是你再放一个隐藏的textBox2在form里
然后
private void textBox1_MouseUp(object sender, MouseEventArgs e)
{
textBox2.Focus();
}

private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
textBox2.Focus();
}
也能达到你说的目的,但不是一个好办法。

另外不明白你为什么不用API现成的方法,而要自己去写。
说白textBox2.Focus()也是API,只不过.net给你封装好了可以直接用罢了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c78fef1
2013-07-23
知道答主
回答量:63
采纳率:0%
帮助的人:15万
展开全部
Form_Load 事件中,FORM并没有展现出来,只是加载相应的资源和组件。此时组件仍不可见,所以Focus事件不会生效。可以在 Shown 事件 或者 Actived 事件里,设置 focus
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_请开始你的表演
2013-09-25 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:175万
展开全部
lable 是可以做到复制的。。我给你写了一个demo 可以发给你看下。QQ: 953954891
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式