当前位置:编程学习 > C#/ASP.NET >>

textbox在c#中怎么添加背景图片??

背景图片! --------------------编程问答-------------------- this.TextBox1.Attributes.Add ( "style", "background:url(http://www.hao123.com/logo.gif)" ); --------------------编程问答-------------------- 是winform的,没有attributes属性,谢谢 --------------------编程问答-------------------- 用textBox添加图片 有创意 哈哈 --------------------编程问答-------------------- 关注下…… --------------------编程问答-------------------- 纳闷儿了,textbox还要背景图片干啥? --------------------编程问答-------------------- 呵呵 --------------------编程问答-------------------- 我要实现这样的菜单,下拉菜单要有背景图片,我不知道用什么控件可以实现.图片有上圆弧和下圆弧.是winform --------------------编程问答-------------------- 当点击mass balance时会弹出灰色部分的菜单.灰色菜单上会有文字.这个东西对界面的美观要求很高.好多控件都不能添加背景图片.有哪位有这方面的经验,给点思路吧 --------------------编程问答-------------------- 思路:
1、最简单的——向TextBox里添加一个PictureBox,往里摁图片进去,不知道效果怎么样,没试过,想当然的!
2、继承——重写OnPaint方法,自己画上去!
3、把图印在透明胶纸上,点的时候把透明胶纸贴在屏幕上(注意适时更换对应胶纸) --------------------编程问答-------------------- 改了个VC++的来,问题是XP里没有WM_CTLCOLOR通知了,搞了半天没搞明白。。。


===========================从textbox类继承处理绘制背景消息====================
    class MyTextBox : TextBox
    {
        const int WM_ERASEBKGND = 0x0014;

        private Image backImage;

        [DisplayName("背景图片。")]
        public Image BackImage
        {
            get { return backImage; }
            set { backImage = value; }
        }

        protected void OnEraseBkgnd(Graphics gs)
        {
            gs.FillRectangle(Brushes.White, 0, 0, this.Width, this.Height); //填充为白色,防止图片太小出现重影
            if (backImage != null) gs.DrawImage(backImage, 0, 0); //绘制背景。
            gs.Dispose();
        }

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_ERASEBKGND) //绘制背景
            {
                OnEraseBkgnd(Graphics.FromHdc(m.WParam));
                m.Result = (IntPtr)1;
            }
            base.WndProc(ref m);
        }
    }

==================窗口类里设置控件的字体颜色等=============================

        const int WM_CTLCOLOREDIT = 0x0133;
        const int TRANSPARENT = 0x1;
        const int NULL_BRUSH = 0x5;

        [DllImport("gdi32")]
        static extern int SetBkMode(IntPtr hdc, int bkMode);
        [DllImport("gdi32")]
        static extern int SetTextColor(IntPtr hdc, int color);
        [DllImport("gdi32")]
        static extern IntPtr GetStockObject(int fnobject);

        protected override void WndProc(ref Message m)
        {
            if (m.Msg == WM_CTLCOLOREDIT && m.LParam == myTextBox1.Handle)//类型为EDIT(TextBox)
            {
                SetBkMode(m.WParam, TRANSPARENT);//设置背景透明
                SetTextColor(m.WParam,0xFF);     //字体颜色为红色
                m.Result = GetStockObject(NULL_BRUSH);
                return;
            }
            else base.WndProc(ref m);
        }
--------------------编程问答-------------------- --------------------编程问答-------------------- 可惜,还是看不太明白 --------------------编程问答-------------------- .username{
    background-image:url(images/username.gif);
background-position: 1px 1px;
background-repeat:no-repeat;
padding-left:20px;
height:20px;
FONT-SIZE: 12px;}

<input name="Username" type="text" class="username" size="30">
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,