C#做了一个无边框只有一根横线的TEXTBOX, 求大婶帮忙

icelovey 2013-10-26 07:38:07
做了一个无边框只有一根横线的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上的那个横线却没有消失, 还是显示在其他程序上面?
该如何解决呢???怎么让那个横线在程序不在最前的时候看不到啊?
不知道表达清楚没??
...全文
542 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
RcStR 2016-03-25
  • 打赏
  • 举报
回复
为何提示。。 错误 2 “TextBox”是“System.Web.UI.WebControls.TextBox”和“System.Windows.Forms.TextBox”之间的不明确的引用
icelovey 2013-11-06
  • 打赏
  • 举报
回复
已经自行解决了, 谢谢大家, 散分
足球中国 2013-10-27
  • 打赏
  • 举报
回复
和你没有关系的。这是系统问题。
icelovey 2013-10-27
  • 打赏
  • 举报
回复
自顶一下
风之影子 2013-10-27
  • 打赏
  • 举报
回复
或者把label的背景色改为黑色
风之影子 2013-10-27
  • 打赏
  • 举报
回复
用一个无边框的文本框加一个高度只有1或2的label不可以实现吗? 把label的text输成_________
icelovey 2013-10-26
  • 打赏
  • 举报
回复
有人碰到类似的情况嘛?
icelovey 2013-10-26
  • 打赏
  • 举报
回复
引用 3 楼 guwei4037 的回复:
我在win8系统下测试了一下,好像并没有你说的这个问题。
主要程序很多用户, 有些是XP, 有些是WIN7, 而且配置不一, 出现这个问题也不是说每次, 有没有办法在程序不在最前的时候, 怎么强制刷新一下? 比如新建个线程, 随时检测是不是在最前, 让横线消失, 刚学C# 不是很懂
全栈极简 2013-10-26
  • 打赏
  • 举报
回复
我在win8系统下测试了一下,好像并没有你说的这个问题。
icelovey 2013-10-26
  • 打赏
  • 举报
回复
引用 1 楼 guwei4037 的回复:
可以自己自定义一个控件,以后的项目直接拖动这个控件到窗体即可。
 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));
                }
            }
        }
    }
已经是自动定义的控件, 写法就是类似你的, 但是出现上面的问题 就是在用户切换到其他程序, 程序并没有最小化, 比如EXCEL, OUTLOOK等的时候, 那个线仍然显示出来, 影响到用户不能很好的使用EXCEL等程序, 最小化的时候, 那个线是会消失的.
全栈极简 2013-10-26
  • 打赏
  • 举报
回复
可以自己自定义一个控件,以后的项目直接拖动这个控件到窗体即可。
 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));
                }
            }
        }
    }

110,534

社区成员

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

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

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