目次

サブフォームを常にメインフォームの手前に表示する - フォームが別のフォームの背後に隠れるのを防ぐ - 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を愛用
掲載日: 2012-04-28
iPentec all rights reserverd.