0

編集
私は解決策を見つけて投稿しました。

私は自分のアプリケーションのインストーラーを作成しようとしていますが、パネルを使用してそれを実行しようとしています(これが適切な方法かどうかはわかりませんが、インストールシールドプログラムを使用する代わりに、より多くのカスタマイズオプションが提供されます) 。これを行うための最良の方法は何でしょうか?
これは私が正しく知っているコードです:

C#コード

foreach (var c in Controls)
{
    if (!(c is Panel)) continue;
    if (c.Name == "pnlBottom") continue;
        
    c.Visible = c.Name.Contains(_currentPanel.ToString());
    
    if (c.Visible) return;
}
4

2 に答える 2

5

これを試してください。単一のパネルの可視性が変わります。

private void PanelVisible(string panelName, bool visible)
{
    var panel = this.Controls.OfType<Panel>().FirstOrDefault(p => p.Name == panelName);
    if (panel != default(Panel)) panel.Visible = visible;
}

すべてを非表示にしたいが、1つにしたい場合:

private void PanelVisible(string panelName)
{
    foreach(var panel in this.Controls.OfType<Panel>().Where(p=>p.Name!="pnlBottom"))
    {
        panel.Visible = panel.Name == panelName;
    }
}
于 2012-11-17T20:00:41.777 に答える
1

これは、パネルを表示するために使用するコードです。

foreach (var c in Controls)
{
    if (!(c is Panel)) continue;
    if (c.Name == "pnlBottom") continue;
        
    c.Visible = c.Name.Contains(_currentPanel.ToString());
    
    if (c.Visible) return;
}

そして、これは私がそれを呼び出して私のパネルを閲覧するために使用するコードです:
次へボタン

private void btnNext_Click(object sender, EventArgs e)
{
    if (pnlContent1.Visible) { ShowPanel("2"); return; }
    if (pnlContent2.Visible) { ShowPanel("3"); return; }
    if (pnlContent3.Visible) { ShowPanel("4"); return; }
    if (pnlContent4.Visible) { ShowPanel("5"); return; }
}

戻るボタン

private void btnBack_Click(object sender, EventArgs e)
{
    if (pnlContent2.Visible) { ShowPanel("1"); return; }
    if (pnlContent3.Visible) { ShowPanel("2"); return; }
    if (pnlContent4.Visible) { ShowPanel("3"); return; }
    if (pnlContent5.Visible) { ShowPanel("4"); return; }
}

これが他の誰かにも使われることを願っています:D!

于 2012-11-17T19:47:55.240 に答える