如何禁用MDI窗口的自动滚动条
<P>网上已经找过很多类似的问题,但似乎还没有人能解决这个问题。<BR>问题很简单,就在怎么样在MDI窗体中禁用掉自动滚动条。如果子窗体的边缘超过的主窗体的显示区域,便会出现滚动条。已经设置过主窗体或子窗体的autoscroll属性,都没有。<BR>可能的解决方案是找出MDIClient实例,scrollbar可能就是由MDIClient 控制,但是不知如何能得到这个scrollbar的实例。<BR>请各路高手帮忙。谢谢</P><P>在父窗体加个Panel1,属性dock设置为fill。把子窗体的容器(Parent)设为Panel1</P></DIV>
<P>请问一下,parent 属性在那,我找不到啊,谢谢</P>
回复:(我是新手么)以下是引用为记忆上锁在2007-9-8...
加了Panel1后把子窗体直接拖上去不就可以了<BR> <DIV class=quote><STRONG></STRONG><BR><BR><P>请问一下,parent 属性在那,我找不到啊,谢谢</P></DIV>
<P>自问自答:<BR><BR>me.prent=mainform.panel1</P>
终于找到答案了,大家分享一下
原始C#Code Block
private const int SB_BOTH = 3;
private const int WM_NCCALCSIZE = 0x83;
[DllImport("user32.dll")]
private static extern int ShowScrollBar(IntPtr hWnd, int wBar, int bShow);
protected override void WndProc(ref Message m)
{
if (mdiClient != null)
{
ShowScrollBar(mdiClient.Handle, SB_BOTH, 0 /*Hide the ScrollBars*/);
}
base.WndProc(ref m);
}
MdiClient mdiClient = null;
private void Form1_Load(object sender, EventArgs e)
{
foreach (Control c in this.Controls) //Find the MdiClient in the MdiWindow
{
if (c is MdiClient)
{
mdiClient = c as MdiClient;
}
}
Form2 form = new Form2();
form.MdiParent = this;
form.Show();
}
修改後的VB.Net
程式碼區塊
Imports System.Runtime.InteropServices
Public Class Form1
Dim mdiClient As MdiClient = Nothing
Dim SB_BOTH As Integer = 3
<DllImport("user32.dll")> _
Private Shared Function ShowScrollBar(ByVal hWnd As IntPtr, ByVal wBar As Integer, ByVal bShow As Integer) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As Message)
If mdiClient IsNot Nothing Then
ShowScrollBar(mdiClient.Handle, SB_BOTH, 0)
End If
MyBase.WndProc(m)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each c As Control In Me.Controls
If TypeOf c Is MdiClient Then
mdiClient = c
End If
Next
Dim fm As Form = New Form2
fm.MdiParent = Me
fm.Show()
End Sub
End Class
页:
[1]
