0

次の問題があります: 私のプログラム (Winforms) には、treeView コントロールを含むメイン ウィンドウがあります。ユーザーが treeView でノードを選択すると、新しい子ウィンドウが作成されます。

これはうまくいきます。しかし、問題は、この子ウィンドウが表示された後、メイン ウィンドウが前面に表示され、この子ウィンドウが部分的に非表示になることです。

それが私のプログラムに関連しているだけではないことを確認するために、小さなモックアップを作成しました。

namespace FatherAndSon
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void button1_Click(object sender, EventArgs e)
    {
        Son aNewSon = new Son();
        aNewSon.Visible = true;
    }

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        Son aNewSon = new Son();
        aNewSon.Visible = true;
    }
}
}

button1 を押すと問題ないのですが、treeView でノードを選択すると、子フォームが表示された直後にメイン ウィンドウが最前面にジャンプします。

なにが問題ですか?

4

3 に答える 3

0

に変更-> この変更Visible = trueにより.Show(this)、その子ウィンドウが常にその上にParent表示されます (この場合はメイン ウィンドウ)。

Son aNewSon = new Son();
aNewSon.Show(this);

子フォームが常に親の上にあることが受け入れられない場合は、次のように変更します。

Son aNewSon = new Son();
aNewSon.Visible = true;
aNewSon.Focus();
于 2013-05-15T07:57:37.493 に答える
0

「aNewSon」を常に一番上に表示するには、新しく作成したフォームに「TopMost」プロパティを追加してみてください。

aNewSon.TopMost = true;

TopMostプロパティについて Msdn を確認してください。

于 2013-05-15T08:01:41.057 に答える