0

私はTreeViewオブジェクトを持っており、nodetreeviewが選択されたときに必要でありform、明確な場所(のプロパティnode)に表示され、別のオブジェクトが選択されたときnodeに変更されformます。ノードが選択されていない場合、form消えます。Formオブジェクトのみが含まれListViewます。VisualStudioのプロパティウィンドウのようなものが必要です。

私が今抱えている問題:

Formランダムに、間違った場所に表示されます。別の場所の特定の場所に表示する必要がありますform

各マウスダウンイベントの後に、新しいものが表示されますが、form必要なのは1つだけですform(または古いものが消えます-新しいものが表示されます)

ノードが選択されていない場合、formは消えません。

どうすればこの問題を解決できますか、またはもっと良い解決策があるかもしれませんか?

4

3 に答える 3

5

あなたが探していると思うのは、PropertyGrid コントロールです。

http://msdn.microsoft.com/en-us/library/aa302326.aspx

これは非常に奥深く複雑なコントロールですが、素晴らしい結果をもたらすことができます。

于 2012-10-30T21:42:16.693 に答える
0

フォームを表示するには、次のコードを試してください。

 private Form2 f2;    

private void button1_Click(object sender, EventArgs e)
{
    if (f2 == null) {
       f2 = new Form2();
       f2.FormClosed += delegate { f2 = null; };
       f2.Show();
    }
    else {
       f2.Activate();
    }
}
于 2012-10-31T20:28:56.863 に答える
0

についてマウスダウンイベントごとに新しいフォームが表示されますが、フォームが1つだけ必要です(または古いものが消えて新しいものが表示されます)私の解決策:

Form クラスに静的変数 Form frm を追加します。Form クラスに静的関数を追加する

//Create new form if not yet created
//Or return instance of opened form which can update by new parameters
public static Form Instance()
{
    if (Form.frm = null)
        Form.frm = new Form();
    return Form.frm;
}

次に、この静的関数のみを使用してすべての新しいフォームを作成します。Form の別のインスタンスを開く場合は、この静的関数のオーバーロード関数を作成します。

そしてもちろん、フォームを閉じるときに静的な Form.frm オブジェクトを破棄することを忘れないでください

于 2012-10-31T20:23:46.957 に答える