我有一张带有背景图片和透明度密钥的表单。 在那种形式中,我把儿童形式必须完全透明,以显示父母形式的bakground。如果我为子表单设置另一个透明度键 - 它根本不会获得透明度,如果我设置父表单的透明度键 - 子表单通过父表单的背景图像。
我需要使用表单 - 而不是用户控件,这是一个问题。而且我不想将dublicate背景图像设置为子形式。
我在视觉上工作。这是设计师的代码:这是我的父母
//
// Main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.DarkRed;
this.BackgroundImage = global::NWN_Tsuki.Properties.Resources.Book;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.ClientSize = new System.Drawing.Size(800, 665);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.CloseBtn);
this.DoubleBuffered = true;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.KeyPreview = true;
this.MaximumSize = new System.Drawing.Size(800, 665);
this.MinimumSize = new System.Drawing.Size(800, 665);
this.Name = "Main";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Header";
this.TransparencyKey = System.Drawing.Color.DarkRed;
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Main_KeyDown);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Main_MouseDown);
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
这就是我将孩子插入父母小组的方式:
private void LeftPanel_Paint(object sender, PaintEventArgs e) {
ToC toc = new ToC();
toc.TopLevel = false;
toc.AutoScroll = true;
this.LeftContent.Controls.Add(toc);
toc.FormBorderStyle = FormBorderStyle.None;
toc.Dock = DockStyle.Fill;
toc.Show();
}
这是我的孩子:
//
// ToC
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Silver;
this.ClientSize = new System.Drawing.Size(428, 396);
this.Controls.Add(this.Ch7Btn);
this.Controls.Add(this.Ch6Btn);
this.Controls.Add(this.Ch5Btn);
this.Controls.Add(this.Ch4Btn);
this.Controls.Add(this.Ch3Btn);
this.Controls.Add(this.Ch2Btn);
this.Controls.Add(this.Ch1Btn);
this.Controls.Add(this.label1);
this.Name = "ToC";
this.Text = "ToC";
this.TransparencyKey = System.Drawing.Color.Silver;
this.ResumeLayout(false);
当孩子在父母内部是银子的情况下,现在它具有透明度键Silver。
如果我将this.BackColor = System.Drawing.Color.DarkRed;
设置为Child,则会触发父母的背景。
这是我的意思的一些图像。
答案 0 :(得分:0)
我不确定为什么你的孩子形式的背景正在刺穿主要形式。 你可能会尝试两件事。
尝试将两种颜色设置为您最不可能使用的颜色。像Color.Magenta
一样。 (我知道你可能已经尝试过这个了)
您应该能够将Back颜色设置为透明here
Button1.BackColor = Color.Transparent;