【问题标题】:How to dark background when my form opens?我的表单打开时如何使背景变暗?
【发布时间】:2020-11-23 07:07:40
【问题描述】:

我正在编写应用程序,其中一部分是打开的文本框。当文本框打开时,我想要深色背景。

我查看了解决方案并在这里找到了它: Creating a dark background when a new form appears

但是,它不适合我。

这是我的代码:

private void App_Load(object sender, EventArgs e)
        {
            this.Text = "TestApp";
            this.Size = new Size(350, 250);
            this.BackColor = Color.DarkGray;
            this.Location = new Point(50, 50);
            this.MaximizeBox = false;

            TextBox.BackColor = Color.WhiteSmoke;
            TextBox.Multiline = true;
            TextBox.Size = new Size(200, 90);

            Button.Text = "Search";
            
            Bitmap bmp = new Bitmap(this.ClientRectangle.Width, this.ClientRectangle.Height);
            using (Graphics G = Graphics.FromImage(bmp))
            {
                G.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver;
                G.CopyFromScreen(this.PointToScreen(new Point(0, 0)), new Point(0, 0), this.ClientRectangle.Size);
                double percent = 0.60;
                Color darken = Color.FromArgb((int)(255 * percent), Color.Black);
                using (Brush brsh = new SolidBrush(darken))
                {
                    G.FillRectangle(brsh, this.ClientRectangle);
                }
            }
            
            using (Panel p = new Panel())
            {
                p.Location = new Point(0, 0);
                p.Size = this.ClientRectangle.Size;
                p.BackgroundImage = bmp;
                this.Controls.Add(p);
                p.BringToFront();

                // display your dialog somehow:
                Form frm = new Form();
                frm.StartPosition = FormStartPosition.Manual;
                frm.ShowDialog(this);
            }           
        }

我收到这个:

也许,有人可以指出我的错误在哪里?

编辑:我找到了解决方案,问题还不够清楚。

【问题讨论】:

  • 您能解释一下您希望它是什么样子吗?
  • 文本框打开,背景变暗。
  • 但是你的图片似乎表明这已经有效了。
  • 所有显示,我的意思是。
  • 那么你需要一个窗口延伸到整个显示器

标签: c# winforms textbox


【解决方案1】:

当文本框打开时,我想要深色背景。

所以你想让文本框变暗,而不是完整的表单?

几乎总是当你认为你必须自己做一些画时,再想一想。很少需要画画。如果您没有任何标准选项,请仅执行此操作。

只需设置文本框的属性背景。使用视觉工作室设计器来做到这一点。 如果您不想使用设计器执行此操作,请在 InitializeComponent 之后的构造函数中执行此操作:

public MyForm()
{
    InitializeComponent();

    // text box dark background:
    this.textBox1.BackColor = Color.Black;
}

如果您希望完整的表单为黑色,请再次使用 Visual Studio Designer,或添加:

InitializeComponent();
this.BackColor = Color.Black;

【讨论】:

  • 从 cmets 的答案看来,OP 想要整个屏幕变暗,而不是文本框。
  • 所以我给出了两个答案。将来只想为一个控件的背景着色的读者会知道这也是可能的
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多