サブフォームを常にメインフォームの手前に表示する - フォームが別のフォームの背後に隠れるのを防ぐ - C#
サブフォームを常にメインフォームより手前に表示したいことがあります。または、フォームが別のフォームの背後に隠れるのを防ぎたい場合があります。
フォームのオーナー関係を設定することでフォームの表示順を制御できます。
例
UI
フォームを2つ作成します。メインフォームにはボタンを1つ設置します。
コード
メインフォームのコードに以下を記述します。ボタンのClickイベントを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MultiFormOwnedApp
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FormSub1 fs1 = new FormSub1();
fs1.Owner = this;
fs1.Show();
}
}
}
解説
fs1.Owner = this;
を記述することにより、サブフォーム fs1はメインフォームに所有されます。メインフォームに所有されたサブフォームは常にメインウィンドウより前面に表示されます。
実行結果
アプリケーションを起動します。メインフォームが表示されます。
メインフォームのボタンをクリックするとサブフォームが表示されます。サブフォーム表示後、メインフォームをクリックしメインフォームにフォーカスを移した場合でも、サブフォームはメインフォームより前面に表示されています。(下図参照)
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用