回答
嘗試實施這種方式,它會工作100%
panel.HorizontalScroll.Maximum = 0;
panel.AutoScroll = false;
panel.VerticalScroll.Visible = false;
panel.AutoScroll = true;
這應該是被接受的答案。沒有其他人爲我工作,但這個簡單的代碼實際上修復了它! – 2015-08-04 20:18:08
@AnonymousPi嘗試了很多得到這個固定。一天浪費我實際上修復它很簡單。 – 2015-11-30 12:04:41
這是一個非常棒的,簡單的答案,用於擺脫水平滾動條。我包含這個解決方案(信貸給@Kbv Subrahmanyam!)在一個更一般的解決方案,我在這裏有自動滾屏問題... http://stackoverflow.com/a/35065017/2175233 – 2016-01-28 15:13:41
我認爲你有這個問題,因爲面板的AutoScroll屬性設置爲true。我做了一個測試解決方案(.NET 3.5),發現了以下內容:
如果你試試這個:
panel.AutoScroll = true;
panel.HorizontalScroll.Enabled = false;
panel.HorizontalScroll.Visible = false;
的HorizontalScroll.Enabled和。可見不更改爲false(假設面板在該自動滾動中具有控件以顯示水平滾動條)。看起來您必須禁用AutoScroll才能夠手動更改這些屬性。
Visual Studio中指出,面板可是沒有HScrollProperties,你確定它確實有它? – 2011-03-30 16:45:12
Blah,對不起,試試HScroll = false; – 2011-03-30 16:46:28
也沒有它,即時嘗試將其從面板中刪除它 - 而不是一個窗體, – 2011-03-30 16:47:39
如果你覺得褻瀆你的代碼,你可以試試這個非常「hackish的」解決方案:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
private enum ScrollBarDirection
{
SB_HORZ = 0,
SB_VERT = 1,
SB_CTL = 2,
SB_BOTH = 3
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
ShowScrollBar(panel1.Handle, (int)ScrollBarDirection.SB_BOTH, false);
base.WndProc(ref m);
}
我目前使用上面的代碼,以防止第三方用戶控件無法顯示其滾動條。他們沒有揭露任何適當的方法來隱藏它們。
以及我不認爲它用於我,我做了一個小測試並使用它,一個面板剛剛消失,另一個面板仍然有滾動條。謝謝anayway :) – 2011-03-31 11:24:39
偉大的作品!雖然'WndProc'部分絕對不需要。只需調用: 'ShowScrollBar(panel1.Handle,(int)ScrollBarDirection.SB_HORZ,false);' 從任何時候你想隱藏滾動條的方法! – BrainSlugs83 2011-11-24 00:26:55
它在關閉表單時顯示win 2008服務器上的錯誤! – 2012-12-07 09:40:10
託管C++代碼隱藏HSCROLL酒吧:
// Hide horizontal scroll bar
HWND h = static_cast<HWND> (this->Handle.ToPointer());
ShowScrollBar(h, SB_HORZ, false);
我是有出現橫向滾動此同一類型的問題時,自動滾屏= true,則僅表現了當垂直滾動條出現。我終於想通了,我從面板中刪除了填充,並且通過將20填充回正確的填充,它允許垂直滾動條出現並且不顯示水平滾動條。
我有一個可滾動的TableLayoutPanel停靠到填充它的父容器,並且剛剛添加20px正確的填充到TableLayoutPanel工作(水平滾動條不再出現)。 – Rachel 2017-01-11 11:28:04
另一種解決方案,這似乎是唯一一個我能得到的工作是相當哈克:
foreach (UserControl control in ListPanel.Controls)
{
if (ListPanel.VerticalScroll.Visible)
control.Width = ListPanel.Width - 23;
else
control.Width = ListPanel.Width-5;
}
其中我調用其OnResize事件
我一直在尋找一個問題的答案,如何在需要時將滾動條添加到框中,並在不需要時將其移除。這是我爲文本框提出的解決方案,具有最大允許的寬度和高度,爲顯示的文本調整大小。
private void txtOutput_TextChanged(object sender, EventArgs e)
{
// Set the scrollbars to none. If the content fits within textbox maximum size no scrollbars are needed.
txtOutput.ScrollBars = ScrollBars.None;
// Calculate the width and height the text will need to fit inside the box
Size size = TextRenderer.MeasureText(txtOutput.Text, txtOutput.Font);
// Size the box accordingly (adding a bit of extra margin cause i like it that way)
txtOutput.Width = size.Width + 20;
txtOutput.Height = size.Height + 30;
// If the box would need to be larger than maximum size we need scrollbars
// If height needed exceeds maximum add vertical scrollbar
if (size.Height > txtOutput.MaximumSize.Height)
{
txtOutput.ScrollBars = ScrollBars.Vertical;
// If it also exceeds maximum width add both scrollbars
// (You can't add vertical first and then horizontal if you wan't both. You would end up with just the horizontal)
if (size.Width > txtOutput.MaximumSize.Width)
{
txtOutput.ScrollBars = ScrollBars.Both;
}
}
// If width needed exceeds maximum add horosontal scrollbar
else if (size.Width > txtOutput.MaximumSize.Width)
{
txtOutput.ScrollBars = ScrollBars.Horizontal;
}
}
SuperOli的回答非常棒!
我更新了代碼,因此可以無任何錯誤地關閉表單。
我希望它也適用於你。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowScrollBar(IntPtr hWnd, int wBar, bool bShow);
private enum ScrollBarDirection
{
SB_HORZ = 0,
SB_VERT = 1,
SB_CTL = 2,
SB_BOTH = 3
}
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == 0x85) // WM_NCPAINT
{
ShowScrollBar(panel1.Handle, (int)ScrollBarDirection.SB_BOTH, false);
}
base.WndProc(ref m);
}
- 1. 如何禁用水平滾動? (不去除水平滾動條)
- 2. 禁用EXTJS面板中的水平滾動條
- 3. 爲面板添加水平滾動條
- 4. GWT水平面板水平滾動
- 5. JavaFX:禁用TableView的水平滾動條
- 6. 禁用iPad上的水平滾動條
- 7. 使用JavaScript禁用水平滾動條
- 8. 使用水平滾動條滾動面板
- 9. 我的asp.net面板上的水平滾動條不會滾動
- 10. C#ListView禁用水平滾動條
- 11. 禁用slickgrid水平滾動條
- 12. 如何禁用UIScrollView的水平滾動?
- 13. 如何禁用NSScrollView的水平滾動?
- 14. 如何禁用jquery的水平滾動?
- 15. 如何禁用uiwebview的水平滾動?
- 16. 如何禁用Flex組件中的水平滾動條?
- 17. 水平滾動條和禁用垂直滾動條
- 18. 如何在FlowLayoutPanel中禁用水平滾動條?
- 19. 如何禁用水平滾動在android
- 20. 如何禁用水平滾動視圖?
- 21. 禁用水平滾動
- 22. Netbeans禁用水平滾動
- 23. jQuery.draggable()禁用水平滾動
- 24. 禁用水平滾動
- 25. 禁用UITableView水平滾動
- 26. Java:jscrollpane禁用水平滾動
- 27. 只在面板中水平滾動
- 28. 水平滾動+滾動條
- 29. 禁用片段中的水平滾動
- 30. 禁用jscrollpane中的水平滾動
類似的問題:http://stackoverflow.com/questions/1325049/winform-panel-scrolling-without-a-scrollbar – 2011-03-30 16:43:17