2

非表示、無効、または null (ラベル、コンボ ボックス、グリッドなど) に設定されているパネル内のさまざまな要素を使用して、C# で winform を構築しています。ユーザーが進んで選択を行うと、これらの要素が取り込まれたり、選択されたりします。

アイデアは、ファイルをアップロードし、それらを読み取り、データベースへのエントリを処理することです。このディレクトリの処理が完了したら、プロセスが完了したときに表示されるボタンを押すことで、ユーザーが winform アプリを終了して再起動せずに別のディレクトリを選択できるようにしたいと考えています。

Web フォームが更新されたときと同様に、アプリケーション (または要素を含むパネル) をリセットするための簡単な呼び出しはありますか? それとも、一度にすべての要素を「リセット」する関数を作成する必要がありますか?

編集: 開発会議の結果、私のプロジェクトの方向性が変わりました。回答を手伝ってくださったお二人に感謝し、質問を締め切らせていただきます。

4

2 に答える 2

2

フォームからパネルを単純に削除し、新しいパネルを作成します。

編集: サンプル:

Panel CreatePanelWithDynamicControls() {
    Panel ret = new Panel();
    ret.Dock = DockStyle.Fill;
    // some logic, which initialize content of panel

    return ret;
}

void InitializeDynamicControls() {
    this.Controls.Clear();
    Panel pnl = this.CreatePanelWithDynamiControls();
    this.Controls.Add( pnl );
}

void Form1_Load( object sender, EventArgs e ) {
    if ( !this.DesignMode ) {
        this.InitializeDynamicControls();
    }
}

// I don't know exactly, on which situation
// do you want reset controls
void SomeEvent( object sender, EventArgs e ) {
    this.InitializeDynamicControls();
}
于 2008-12-03T16:11:55.643 に答える
1

this.InitializeComponent() を呼び出してみると、うまくいくかもしれません。または、アプリケーションに「ディレクトリ選択」フォームと「プロセス ファイル」フォームがある場合、ディレクトリ選択フォームにプロセス ファイル フォームで「新規」を実行させることができます。開いていますが)。

于 2008-12-03T16:10:47.423 に答える