读书人

C#做了一个无边框唯有一根横线的TEXTB

发布时间: 2013-11-09 17:06:53 作者: rapoo

C#做了一个无边框只有一根横线的TEXTBOX, 求大婶帮忙
本帖最后由 icelovey 于 2013-10-26 19:51:08 编辑 做了一个无边框只有一根横线的TextBox, 因为考虑到窗口变化大小, 或者只读状态变更等问题,
里面有个重绘画线的线程,代码类似这样的


Graphics g = this.CreateGraphics();
g.Clear(Color.SeaShell);
Brush b = new SolidBrush(Color.Blue);

Pen p = new Pen(b,11);
p.Width = 12;
g.DrawLine(p, 100, 300, 100, 400);


但是出来一个问题, 我打开程序之后, 如果用户切换到其他程序, 比如EXCEL或者什么的, 那个TextBox上的那个横线却没有消失, 还是显示在其他程序上面?
该如何解决呢???怎么让那个横线在程序不在最前的时候看不到啊?
不知道表达清楚没??
[解决办法]
可以自己自定义一个控件,以后的项目直接拖动这个控件到窗体即可。
 public partial class CustomControl1 : TextBox
{
public CustomControl1()
{
InitializeComponent();

this.BorderStyle = BorderStyle.None;
this.BackColor = SystemColors.Control;
}

private int WM_PAINT = 0x000F;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);

if (m.Msg == WM_PAINT)
{
Pen pen = new Pen(Brushes.Olive, 1.5f);
using (Graphics g = this.CreateGraphics())
{
g.DrawLine(pen, new Point(0, this.Size.Height - 1), new Point(this.Size.Width, this.Size.Height - 1));
}
}
}
}

[解决办法]
我在win8系统下测试了一下,好像并没有你说的这个问题。
[解决办法]
和你没有关系的。这是系统问题。
[解决办法]
用一个无边框的文本框加一个高度只有1或2的label不可以实现吗?

把label的text输成_________
[解决办法]
或者把label的背景色改为黑色

读书人网 >C#

热点推荐