Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当我的窗体打开时,如何使背景变暗?_C#_Winforms_Textbox - Fatal编程技术网

C# 当我的窗体打开时,如何使背景变暗?

C# 当我的窗体打开时,如何使背景变暗?,c#,winforms,textbox,C#,Winforms,Textbox,我正在编写应用程序,其中一部分是open textbox。当文本框打开时,我想要暗背景 我在这里找到了解决方案: 但是,它不适合我 这是我的密码: private void App_Load(object sender, EventArgs e) { this.Text = "TestApp"; this.Size = new Size(350, 250); this.BackColor

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

我在这里找到了解决方案:

但是,它不适合我

这是我的密码:

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);
            }           
        }
我收到这个:

也许有人能指出我的错误在哪里

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

当文本框打开时,我想要暗背景

所以你希望文本框是黑色的,而不是完整的表单

几乎总是当你认为你必须自己画画的时候,再想想。很少有必要画画。只有在没有任何标准选项的情况下才能这样做

只需设置文本框的属性背景。使用VisualStudio designer执行此操作。 如果不想使用设计器执行此操作,请在InitializeComponent之后在构造函数中执行此操作:

public MyForm()
{
    InitializeComponent();

    // text box dark background:
    this.textBox1.BackColor = Color.Black;
}
如果希望完整表单为黑色,请再次使用visual studio designer,或添加:

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

你能解释一下你希望它看起来是什么样子吗?文本框打开了,背景变暗了。但是你的图片似乎表明这已经起作用了。所有的显示,我的意思是。然后你需要一个窗口延伸到整个显示从回答到评论,似乎OP希望整个屏幕变暗,不是文本框。所以我给出了两个答案。未来只想为一个控件的背景着色的读者会知道这也是可能的