0

同じサイズで同じ位置の3つのパネルpnlPanel0、pnlPanel1、pnlPanel2があります。

「左」または「右」のボタンを使用して、各パネルの表示を変更する必要があります。

pnlPanel0(ラベルを含む)およびpnlPanel2(ボタンを含む)の場合-OK。

ただし、pnlPanel1(ListViewを含む)の場合:

curLayer == 1:pnlPanel1.Visible=trueの後; ListViewのあるパネルはまだ見えません。

ただし、pnlPanel1がpnlPanel0およびpnlPanel2と交差していない場合-OK。

なんで?

この場合、「前面に移動」/「背面に送信」に問題がある可能性がありますか?

別の安全で問題のない解決策はありますか?

     if (curLayer == 0)
        {
            pnlPanel0.Visible = true;
            pnlPanel1.Visible = false;
            pnlPanel2.Visible = false;
        }
        else if (curLayer == 1)
        {
            pnlPanel0.Visible = false;
            pnlPanel1.Visible = true;
            pnlPanel2.Visible = false;
        }
        else if (curLayer == 2)
        {
            pnlPanel0.Visible = false;
            pnlPanel1.Visible = false;
            pnlPanel2.Visible = true;
        }

        MessageBox.Show(Convert.ToString(pnlPanel1.Visible)); // always false

.NET CF 3.5 / WinForms / VS 2008 / WinCE

4

2 に答える 2

1

約7つのパネルコントロールを備えたフォームがあります。

Form_Load、すべてのパネルがに設定され.Dock = DockStyle.Fill;ます。

さらに、すべてのパネルがこの同じGotFocusイベントを共有します。

private void ActivePanel_GotFocus(object sender, EventArgs e) {
  Panel pnl = sender as Panel;
  if (pnl != null) {
    pnl.BringToFront();
  }
}

特定のパネルで何かをする必要がありますか?OK、次にこのバージョンを見てください:

private void ActivePanel_GotFocus(object sender, EventArgs e) {
  Panel pnl = sender as Panel;
  if (pnl != null) {
    pnl.BringToFront();
    if (pnl.Name == pnlPanel0.Name) {
      // Do something with pnlPanel0
    }
  }
}
于 2012-08-31T20:41:31.303 に答える
-1

考えられる解決策:

パネルなしで作る

于 2012-08-31T12:32:38.987 に答える