1

町や学校の徴税人が使用する FoxPro で作成されたプログラムを書き直しています。残念ながら、私はこれを学んでいます。このプログラムでは、ウィンドウをモーダルにする必要があります。ユーザーは特定のパスをたどり、一度に複数のウィンドウで遊ぶことはできません。開いている MDI コンテナー フォームがあります。すべての子フォームはそこから呼び出されます。現在、子フォームを最大化していません。次のようになります。

ここに画像の説明を入力

最大化されていないため、スクロール バーが表示されます。スクロール バーを処理させたくないので、子フォームであるログイン フォームに移動し、WindowState を最大化に設定します。私はこれを得る:

ここに画像の説明を入力

スクロール バーはなくなり、子ウィンドウはコンテナー ウィンドウに完全に収まりますが、上部に 2 つのコントロール バーがあります... コンテナー用のメイン 1 つと、子フォーム用の 2 つ目の小さいコントロール バーです。その上でダブルコントロール。MaximizeBox、MinimizeBox、ShowIcon、および ControlBox を false に設定しようとしましたが、子フォームのテキストを削除しましたが、そのバーはまだそこにあります。小さいバーの特定のボタンをクリックすると、重複が消えます。2 番目のバーを取り除く方法、またはコントロールを非表示にする方法を探しています。

4

1 に答える 1

6

UserControls を使用しない理由は、メイン フォームから追加/削除できるためです。Mdi フォームのようなオーバーヘッドはありません。

UserControl でプロパティとイベントを設定して、メイン フォームとの間でデータをやり取りする簡単で汚い例を次に示します。

フォーム1

public partial class Form1 : Form
{
    UserControl1 login = new UserControl1();
    public Form1()
    {
        InitializeComponent();
        login.ExitEvent += new UserControl1.ExitEventHandler(login_ExitEvent);

    }

    void login_ExitEvent(object sender, EventArgs e)
    {
        panel1.Controls.Remove(login);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        panel1.Controls.Add(login);
        login.BringToFront();
    }
}

ユーザーコントロール

public partial class UserControl1 : UserControl
{
    public delegate void ExitEventHandler(object sender, EventArgs e);
    public event ExitEventHandler ExitEvent; 

    public UserControl1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ExitEvent(this, new EventArgs());
    }
}
于 2012-06-07T15:10:55.673 に答える