TextBox与透明背景

时间:2011-04-05 19:27:26

标签: c# .net winforms visual-studio

我想将textBox作为透明背景c#.net 如果定义属性

,Visual Studio会出错

3 个答案:

答案 0 :(得分:4)

将它放在构造函数中:

SetStyle(ControlStyles.SupportsTransparentBackColor, true);

该类需要启用透明样式。 (出于某种原因,默认情况下不支持。)

public class MyControl : System.Windows.Forms.UserControl
{
        public MyControl ()
        {
            // Create visual controls
            InitializeComponent();
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        }
}

或者如果它不是自定义控件:

mycontrolObject.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

有关Control.SetStyle Method

的更多信息

其他Control Styles

答案 1 :(得分:3)

我找到了解决这个问题的方法,我自己就是这个问题。 我在这里读到的大部分内容都是真实的。而“la”AlphaBlendTextBox方法对某些环境而言过于复杂或过于耗时,而这些环境已经收费很高。

假设您具有给定的背景颜色和给定的图片或您希望通过RichTextBox控件看到的任何内容。这就是我所做的(总结):

    在主窗体上
  1. ,您可以使用正确的背景颜色和/或图片放置图片,文本,按钮或其他任何投影
  2. 创建新表单并在适当的位置定位
  3. 将此新表单TransparencyKey设置为SystemColors.InactiveBorder
  4. 处理此表单边框属性(FormBorderStyleFormBorderStyle.None; ControlBoxMinimizeBoxMaximizeBoxShowIcon至{{1 },falseTopMosttrueStartPositionFormStartPosition.ManualSizeGripStyle),所以没有可见的表单结构
  5. 创建一个SizeGripStyle.Hide,其大小与表格相同,位于其左上角
  6. 将此框RichTextBox设置为BackColor(还记得TransparencyKey吗?) 及其SystemColors.InactiveBorder到无
  7. 处理文本框内容:颜色,字体和字符串
  8. 将此表单可见性与您需要的任何内容同步,并且......瞧!您可以通过在文本框中编写和编辑的任何内容来查看应用程序背景!
  9. 我不能假装这种方法适合所有人,但它比我见过的其他方式更简单,只要我能保持这种方式,我更喜欢更简单的解决方案。

    当然,当您关闭主表单时,您必须处理子表单,但这对您来说非常基本,不是吗?

    享受!

答案 2 :(得分:2)

这不是一件容易的事。 .Net TextBox控件是Win32 Edit控件的包装器,因此您需要进行子类化以实现背景透明度。

看看这个示例:AlphaBlendTextBox - A transparent/translucent textbox for .NET