|
■No100915 (ミミズ さん) に返信
> Form.Showでも常に前面表示はできるのですが、
> 親フォームをクリックするとコントロールを操作できてしまいます。
> Form.Enabled = Falseにすると操作できなくなるのですが、
> 外観がグレー色になってしまうため、
> 外観をそのままでコントロール操作できないようにすることって可能でしょうか?
EnableWindow を使ったらどうでしょう?
【Form1.cs】
using System;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
var f = new Form2();
f.Show(this);
}
}
【Form2.cs】
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public partial class Form2 : Form
{
public Form2() {
InitializeComponent();
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
if (Owner != null) {
EnableWindow(Owner.Handle, false);
}
}
protected override void OnFormClosed(FormClosedEventArgs e) {
base.OnFormClosed(e);
if (Owner != null) {
EnableWindow(Owner.Handle, true);
Owner.Activate();
}
}
}
|