我一直在尋找一段時間獲得一個關於在面板上獲得一個垂直滾動條的教程(並讓它正常工作等)我試圖做一個面板可滾動,但只能垂直滾動(所以AutoScroll
將不起作用,因爲子控件經過左邊緣並且必須)。那麼這是如何完成的?這可能以前被問過,但我無法在任何地方找到它。在.NET中添加垂直滾動條到面板
回答
假設您使用的是winforms,默認的面板組件不會提供禁用水平滾動組件的方法。這方面的一個解決方法是自己禁用自動滾動,並添加一個滾動條:
ScrollBar vScrollBar1 = new VScrollBar();
vScrollBar1.Dock = DockStyle.Right;
vScrollBar1.Scroll += (sender, e) => { panel1.VerticalScroll.Value = vScrollBar1.Value; };
panel1.Controls.Add(vScrollBar1);
詳細討論此:http://social.msdn.microsoft.com/Forums/en-IE/winforms/thread/6b9c2c72-e91a-40f0-a835-c12328490c0c
我真的不想做這個'黑客'。我怎樣才能用'VScrollBar'組件手動執行它? – 2011-05-22 20:35:26
添加了一個小樣本。 – 2011-05-22 20:37:23
@Teoman這個例子沒有幫助,我可以用表單設計器來做到這一點。確定滾動條的最大/最小值應該是多少的公式是什麼?當滾動條向下滾動時,我如何偏移面板內的控件? – 2011-05-22 20:42:27
添加到您的面板的樣式代碼是這樣的:
<asp:Panel ID="myPanel" runat="Server" CssClass="myPanelCSS" style="overflow-y:auto; overflow-x:hidden"></asp:Panel>
面板具有AutoScroll屬性。只需將該屬性設置爲True,面板將在需要時自動添加滾動條。
下面是實現自定義垂直滾動條的代碼。這裏的重要細節是通過計算添加到面板的控件佔用多少空間來知道何時需要滾動條。
panelUserInput.SuspendLayout();
panelUserInput.Controls.Clear();
panelUserInput.AutoScroll = false;
panelUserInput.VerticalScroll.Visible = false;
// here you'd be adding controls
int x = 20, y = 20, height = 0;
for (int inx = 0; inx < numControls; inx++)
{
// this example uses textbox control
TextBox txt = new TextBox();
txt.Location = new System.Drawing.Point(x, y);
// add whatever details you need for this control
// before adding it to the panel
panelUserInput.Controls.Add(txt);
height = y + txt.Height;
y += 25;
}
if (height > panelUserInput.Height)
{
VScrollBar bar = new VScrollBar();
bar.Dock = DockStyle.Right;
bar.Scroll += (sender, e) => { panelUserInput.VerticalScroll.Value = bar.Value; };
bar.Top = 0;
bar.Left = panelUserInput.Width - bar.Width;
bar.Height = panelUserInput.Height;
bar.Visible = true;
panelUserInput.Controls.Add(bar);
}
panelUserInput.ResumeLayout();
// then update the form
this.PerformLayout();
試試這個,而不是'只'滾動垂直。
(自動滾動需要是假的B4它會接受改變)
mypanel.AutoScroll = false;
mypanel.HorizontalScroll.Enabled = false;
mypanel.HorizontalScroll.Visible = false;
mypanel.HorizontalScroll.Maximum = 0;
mypanel.AutoScroll = true;
提出「AutoScroll」需要設置爲false的事實很有用,謝謝你 – mschr 2016-07-31 09:57:21
- 1. 面板後面垂直滾動條
- 2. 將垂直滾動條添加到checkedlistbox
- 3. 將垂直滾動條添加到cakephp3
- 4. ExtJS:自動滾動垂直FormPanels添加到面板
- 5. 面板垂直滾動
- 6. 將垂直滾動添加到水平滾動條
- 7. 如何在Swing中將垂直滾動條添加到JTextArea?
- 8. 垂直滾動條到表
- 9. 垂直滾動條
- 10. 垂直滾動條
- 11. 如何水平/垂直滾動條添加到JScrollPane中
- 12. 如何添加垂直滾動條到滑動菜單
- 13. 添加jQuery垂直滾動條到動態內容
- 14. 如何自動添加垂直滾動條到我的div?
- 15. 垂直滾動條在JTable
- 16. Xaml - 堆疊面板中的垂直滾動條
- 17. 垂直和水平滾動條在面板
- 18. 無法在html中添加垂直滾動條?
- 19. 如何在asp下拉列表中添加垂直滾動條?
- 20. 如何在Canvas中添加垂直滾動條?
- 21. 垂直,可滾動的面板列表
- 22. 垂直滾動條動畫
- 23. 桌面視圖的垂直滾動條
- 24. 如何將垂直滾動條添加到dojo選擇?
- 25. 將滾動條垂直添加到表格
- 26. jqPlot - 如何垂直滾動條添加到圖例框包含
- 27. 將垂直滾動條添加到iFrame時出現問題
- 28. 如何將垂直滾動條添加到NSTextField?
- 29. 添加垂直滾動條到一個警告對話框
- 30. 如何添加垂直滾動條到dojox.grid.DataGrid?
所以,你要只有垂直滾動時,它的必要嗎?所以將'Scrollbars'屬性設置爲'Vertical'將不起作用? – debracey 2011-05-22 20:29:15
@debracey我的'Panel'上沒有任何屬性叫做'Scrollbars',它不會在Intellisense中顯示出來。我見過其他人談論它,所以我認爲它存在,但我只是做錯了。我得到這一行的錯誤:'panel1.Scrollbars = ScrollBars.Vertical;' - ''System.Windows.Forms.Panel'不包含'Scrollbars'的定義,沒有擴展方法'Scrollbars'接受第一個參數可以找到類型'System.Windows.Forms.Panel'(你是否缺少使用指令或程序集引用?) – 2011-05-22 20:33:21
@debracey我正在使用VS 2010 Pro。 – 2011-05-22 20:33:33