首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WPF 與 WinForms 設置控件可見性的區別

     編輯:程式設計綜合問答

核心區別

框架屬性名類型隱藏值顯示值
WinFormsVisibleboolfalsetrue
WPFVisibilityVisibility 枚舉Visibility.Collapsed / HiddenVisibility.Visible

代碼示例

WinForms

button1.Visible = false; // 隱藏佔用空間
button1.Visible = true;  // 顯示

WPF

// 隱藏且不佔用佈局空間(推薦)
button1.Visibility = Visibility.Collapsed;

// 隱藏但保留佈局空間
button1.Visibility = Visibility.Hidden;

// 顯示
button1.Visibility = Visibility.Visible;

WPF Visibility 枚舉詳解

  • Visible:可見,參與佈局渲染
  • Hidden:不可見,但保留佈局空間(佔位)
  • Collapsed:不可見,不佔用佈局空間(不佔位,周圍元素會填補)

XAML 中綁定示例

<Button x:Name="btnSubmit" Content="提交" 
        Visibility="{Binding IsAdmin, Converter={StaticResource BoolToVisibilityConverter}}" />

BoolToVisibilityConverter 實現

public class BoolToVisibilityConverter : IValueConverter {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
        return (Visibility)value == Visibility.Visible;
    }
}

常見坑點

  • 混淆 `Visible` (bool) 和 `Visibility` (enum) 導致編譯錯誤
  • WPF 中無 `IsVisible` 可寫屬性(唯讀)
  • 動畫控制可見性時需用 `ObjectAnimationUsingKeyFrames`

總結

WinForms 用 `bool Visible`,WPF 用 `Visibility` 枚舉。WPF 的 `Collapsed`/`Hidden` 區別是佈局佔位行為,按需選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved