如何在 C# 中向窗口添加滚动条

Posted

技术标签:

【中文标题】如何在 C# 中向窗口添加滚动条【英文标题】:How to Add a Scrollbar to Window in C# 【发布时间】:2011-08-29 10:59:54 【问题描述】:

我创建了一个如下窗口:

Window myWindow = new Window();

如何在此 Windows 中添加垂直滚动条并仅在高度不足以显示所有元素时才使滚动条可见。

【问题讨论】:

【参考方案1】:

您不能将滚动条添加到窗口本身。您只能向控件添加滚动条。 IE。到窗口内的网格。

例子:

<Grid  ScrollViewer.CanContentScroll="True"
       ScrollViewer.HorizontalScrollBarVisibility="Auto">
   ...
</Grid>

编辑:

刚刚意识到 Window 也有一个 ScrollViewer 属性。我不确定这个属性如何用于 Window 以及这样的窗口会是什么样子。试了一下,没有滚动条出现。

编辑 2:

ScrollViewer sv = new ScrollViewer();
sv.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
myGrid.Children.Add(sv);

【讨论】:

感谢您的回复。我没有使用 XAML 创建 Grid,而是使用 Programatically usig Grid 创建了它。我要设置 Grid 的哪些属性来获取滚动条? 我没有 ScrollViewer 属性。您使用的是哪个版本的 .NET? @Gunner - 我使用的是 .NET 3.5 SP1。 ScrollViewer 位于 System.Windows.Controls.ScrollViewer【参考方案2】:

您可以在窗口中添加ScrollViewer 元素并将必要的控件放入ScrollViewer 控件中。

<ScrollViewer VerticalScrollBarVisibility="Auto">
    ...
</ScrollViewer>

或者,如果您想在代码隐藏文件中编写代码,您可以编写

ScrollViewer viewer = new ScrollViewer();
viewer.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
// append scroll viewer to window

【讨论】:

【参考方案3】:

试试这个

var xpage = your user control or page to which scroll bar need to be added at runtime

            xpage.SetValue(ScrollViewer.CanContentScrollProperty, true);
            xpage.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);
            xpage.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Auto);

            var scrollViewer = xpage.Content as ScrollViewer;
            if (scrollViewer != null)
            
                var content = scrollViewer.Content;
                scrollViewer.Content = null;
                xpage.Content = content;
            
            else
            
                var content = xpage.Content;
                xpage.Content = null;
                xpage.Content = new ScrollViewer  Content = content ;
            

【讨论】:

以上是关于如何在 C# 中向窗口添加滚动条的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flex 中向 UIComponent 添加滚动条

如何在 Windows 窗体应用程序中向具有许多控件的 Panel 控件添加滚动条?

C# Winform 滚动条的问题

QT中如何给主窗口添加滚动条

vc++如何为窗口添加滚动条?

C#怎么给listview添加滚动条