2010-11-22 4 views
1

私はC#プログラミング言語の初心者です。 私の問題は、 "item.Visibility"属性を使って可視性をチェックする方法を書いていることです。 その擬似コード:C#での可視性のシステムタイプ

 

private void MenuItem_Check(MenuItem item){ 
    if ((item.Visibility.ToString()=="Hidden") ||(item.Visibility.ToString()=="Collapsed")) 
    item.Visibility=Visibility.Visible; 
} 

 

前もってお礼を言いたいと思います。

+0

@Martin Liversage:間違ったコードとの感謝のために申し訳ありません補正。 – scratmiller

答えて

8

あなたは本当にアイテムが隠されたり縮小されているかどうかを気にしない - あなたは確認することで、単に興味あなたの前にまだ見えていないことをにしてください。だから、それをチェック:

private void MenuItem_Check(MenuItem item){ 
    // if item is not already visible, make it visible 
    if (item.Visibility != Visibility.Visible) 
     item.Visibility=Visibility.Visible; 
} 

これはあなたのコードがVisibility.OnlyWithXRayGoggles定数は、.NET 6.0でVisibility enumerationに追加されたときに作業を継続することを可能にする追加の利点を持っています。

(他の回答がすでに指摘したように、文字列に値を変換する正当な理由はありません - 列挙が自分自身を定数とあなたは直接比較することができます)

+0

if()文を削除してください。 –

+1

@ハンス:WPFにあまり馴染みがありません - 実際に変更せずにこのプロパティを設定するとペナルティはありますか? (イベントがトリガーされたり、レイアウトの再計算が強制されたり、実際には何も変更されていないことに気付くほどスマートです) – Shog9

3

ToString()のための必要性無し... Visibilityが列挙です...

private void MenuItem_Check(MenuItem item){ 
    if (item.Visibility == Visiblity.Hidden || item.Visibility == Visiblity.Collapsed) 
     item.Visibility=Visibility.Visible; 
} 
0
private void MenuItem_Check(MenuItem item) 
{ 
    if ((item.Visibility == Visibility.Hidden) || 
     (item.Visibility == Visibility.Collapsed)) 
    { 
     item.Visibility = Visibility.Visible; 
    } 
}