日期:2014-05-18  浏览次数:21782 次

C#的textbox如何透明?
MainForm上设置了一个背景图片,图片上的某个位置有两个小框框,作用是输入文字的,框框里的背景是蓝色的。

我在框框的上方添加了textbox组件。但是textbox组件是白色的,无法设置成透明的。
而且,在设计框图上,我明明将textbox的大小拉得刚刚好,就是和背景图上的蓝色小框完全覆盖,但是在运行的时候,textbox却没有将蓝色的完全覆盖,周围显示出一圈细线。

问题,1,怎么样将textbox设置成透明。
2,为什么MainForm设计上,我明明吧textbox和北京上的蓝色框调成一样大,并且覆盖了的,但是运行后,却没有覆盖完,textbox明显小一圈,周围显示出一圈蓝色的,怎么办?


------解决方案--------------------
不知道你要的透明是什么效果,但是文本框全透明没有任何意义。你如果是想达到和窗体一样,那么背景色和窗体一个颜色就好了
窗体背景是图片你就截图做文本框背景吧!应该能达到你的要求
------解决方案--------------------
1.
C# code

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            RichEdit50 re = new RichEdit50();  
            //用RichEdit50来取代你的TextBox  这个就是透明文本框
            re.Text = "I am Transparent";
            this.Controls.Add(re);
            this.Show(); 
        }  
    }
    public class RichEdit50 : RichTextBox
    {
        [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr LoadLibrary(string lpFileName);

        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams prams = base.CreateParams;
                if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
                {
                    prams.ExStyle |= 0x020; // transparent 
                    prams.ClassName = "RICHEDIT50W";
                }
                return prams;
            }
        }    
    }