C# TransparencyKeyで背景抜きをしたフォームに透明のPanelなどを重ねると、背面の操作ができない


赤で背景を塗りつぶした画像をWindowsFormの背景にセットし、TransparencyKeyをRedに  
することで、背景抜きされた画像の形にフォームが出来上がります(FormBorderStyleで縁を消すか否かは別)。  
通常この状態ですと、図のように星と星の間の空いている場所は背面のデスクトップの操作ができるのが普通です。

しかし、この上にPanelなどをDock.Fillなどで張り付け、そのPanelのBackColorをTransparentにし、見た目上は同じフォームになりますが、そのPanelなどがデスクトップ側の操作を妨げてしまっているようです。

当然、PanelなどのコントロールにはTransparencyKeyなどはなく、例え背景が透明で抜けていても背面側の操作ができません。

Dock.Fillでフォームいっぱいにコントロールを広げた場合でも、透過されている部分は背面の操作ができるようにする方法はありますでしょうか。

よろしくお願いいたします。

[![画像の説明をここに入力](https://i.stack.imgur.com/kKmNG.jpg)](https://i.stack.imgur.com/kKmNG.jpg)

* * *

**追記**

本日(11/15)、もう一度ゼロから作り直してみたのですが、BackColor、TransparencyKeyともに同じ色にして実行したところ、背景は今まで通り抜けるのですが、背面側の操作ができません。

今迄は何もなくとも透過部分は背面の操作ができた気がしたのですが、最近の.Netになって仕様が変更になったのでしょうか？

念のためDesign側のコードを掲載します。

[code]

    namespace WindowsFormsApp1
    {
        partial class Form1
        {
            /// <summary>
            /// 必要なデザイナー変数です。
            /// </summary>
            private System.ComponentModel.IContainer components = null;
    
            /// <summary>
            /// 使用中のリソースをすべてクリーンアップします。
            /// </summary>
            /// <param name="disposing">マネージド リソースを破棄する場合は true を指定し、その他の場合は false を指定します。</param>
            protected override void Dispose(bool disposing)
            {
                if (disposing && (components != null))
                {
                    components.Dispose();
                }
                base.Dispose(disposing);
            }
    
            #region Windows フォーム デザイナーで生成されたコード
    
            /// <summary>
            /// デザイナー サポートに必要なメソッドです。このメソッドの内容を
            /// コード エディターで変更しないでください。
            /// </summary>
            private void InitializeComponent()
            {
                this.SuspendLayout();
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.BackColor = System.Drawing.Color.Red;
                this.BackgroundImage = global::WindowsFormsApp1.Properties.Resources.star;
                this.ClientSize = new System.Drawing.Size(800, 450);
                this.Name = "Form1";
                this.Text = "Form1";
                this.TransparencyKey = System.Drawing.Color.Red;
                this.ResumeLayout(false);
    
            }
    
            #endregion
        }
    }
    
[/code]




Form の Region を 設定すると そのフォームが切り取られたようになります。

[code]

            private void Form2_Shown(object sender, EventArgs e)
            {
                GraphicsPath graphicsPath = new GraphicsPath();
                graphicsPath.AddEllipse(0, 0, 100, 100);
                Region = new Region(graphicsPath);
            }
    
[/code]

Region を Bitmap から生成するのは  
<https://smdn.jp/programming/tips/create_region_from_bitmap/>  
を参考にできます。

また、文字列から Region を生成するのは  
<https://qiita.com/Zuishin/items/0de2c21fbac5d0190c8b>  
を参考にして

[code]

    var graphicsPath = new GraphicsPath();
    graphicsPath.AddString("★", new FontFamily("メイリオ"), 0, 50, new Point(0, 0), StringFormat.GenericDefault);
    Region = new Region(graphicsPath);
    
[/code]

と書く事ができます。  
Form の 形を変えないと 見た目だけ透明にしても 後ろの操作はできないはずです。

