|
■No87094 (対中率 さん) に返信 > フォームを最前面にしつつ、キーボードやマウス操作のみ背面に反映する方法はないでしょうか。
枠線部もマウス操作を受け付けない方が良いでしょうか?
private void button1_Click(object sender, EventArgs e) { var fw = new FrameWindow(); fw.SetBounds(50, 100, 350, 250); fw.Show(this); }
private class FrameWindow : Form { protected override CreateParams CreateParams { get { const int WS_EX_NOACTIVATE = 0x8000000; // アクティブにならないフォームにする const int WS_EX_TRANSPARENT = 0x20; // マウス操作を透過(要レイヤードウィンドウ) var cp = base.CreateParams; cp.ExStyle |= WS_EX_TRANSPARENT | WS_EX_NOACTIVATE; return cp; } } public FrameWindow() { ShowInTaskbar = false; TopMost = true; BackColor = Color.Blue; // 枠線色 Padding = new Padding(9); // 枠線幅 FormBorderStyle = FormBorderStyle.None; Controls.Add(new Control() { BackColor = Color.Magenta, Dock = DockStyle.Fill });
// WS_EX_TRANSPARENT を有効にするには、 // TransparencyKey をセットするか、もしくは // Opacity を 1.0 未満にする必要がある TransparencyKey = Color.Magenta; } }
|