Вчера я обнаружил что-то очень странное (я думаю).Похоже, Form.TransparencyKey
дает разные результаты, в зависимости от того, какой цвет используется как BackgroundColor
и TransparencyKey
.Если вы хотите воспроизвести это, сделайте следующее:
- Создайте новое приложение Windows Forms
- Добавьте
Panel
в форму - Дайте ему "Зеленый" как
BackgroundColor
и установите для Form1's TransparencyKey
также зеленый - Запустите программу и поместите форму с «отверстием» поверх чего-либо, и вы увидите, что можете щелкнуть через это отверстие (как описано в MSDN)
- Теперь измените оба цвета на «Красный» и запустите приложение - вы увидите «дыру», но вы больше не можете щелкнуть, хотя она
Знаете ли вы, почему это происходит?Какое правило?Я использую .NET 4 с VS2010, протестирован на двух компьютерах с одинаковой конфигурацией.
Не так много кода для этого ... Но я могу опубликовать настройки в конструкторе:
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Red;
this.panel1.Location = new System.Drawing.Point(23, 26);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(229, 176);
this.panel1.TabIndex = 0;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.panel1);
this.Name = "Form1";
this.Text = "Form1";
this.TransparencyKey = System.Drawing.Color.Red;
this.ResumeLayout(false);
}
//that outside:
private System.Windows.Forms.Panel panel1;