如何不显示子窗口的最小化和最大化按钮
如题,我把controlbox ,max minmizebox属性都false还是没用,还有什么方法? 问题点数:20、回复次数:10Top
1 楼xujiaoxiang(翱翔)回复于 2005-11-15 10:09:33 得分 0
controlbox ,max minmizebox属性都false还是没用?
那你试试这个FormBorderStyle属性Top
2 楼q_po_o(两个人)回复于 2005-11-15 10:12:23 得分 0
转贴
frm.MdiParent = this;
frm.ControlBox = false;
frm.Show();
frm.Focus();
frm.Dock = DockStyle.Fill;Top
3 楼Macosx(结贴)回复于 2005-11-15 10:23:05 得分 0
我按你的做了 可以啊Top
4 楼dreamfeer(菜鸟)回复于 2005-11-15 10:24:13 得分 0
以上2个方法都不行啊。Top
5 楼dreamfeer(菜鸟)回复于 2005-11-15 10:24:52 得分 0
忘了说:子窗口是最大化状态Top
6 楼zxf_hay(sjh)回复于 2005-11-15 14:22:39 得分 0
FormBorderStyle=fixedDialogTop
7 楼zxf_hay(sjh)回复于 2005-11-15 14:24:24 得分 0
formborderstyle=fixeddialog
maximizebox=false
minmizebox=false
showintaskbar=falseTop
8 楼q_po_o(两个人)回复于 2005-11-15 14:54:41 得分 0
Form form = new Form();
form.MdiParent = this;
form.MaximizeBox = false;
form.MinimizeBox = false;
form.Show();
form.Activate();
form.Location = new Point(0,0);
form.Size = form.Parent.ClientSize;
在主窗口的SizeChanged的事件中添加
private void MainForm_SizeChanged(object sender, System.EventArgs e)
{
foreach(Form frm in this.MdiChildren)
{
frm.Location = new Point(0,0);
frm.Size = frm.Parent.ClientSize;
}
}
Top
9 楼dreamfeer(菜鸟)回复于 2005-11-18 16:04:13 得分 0
不是我想要的啊。
childwindow最大化有那3个最大、最小、关闭按钮,有办法不显示吗?
我想象应该重绘才能做到吧???Top
10 楼trumf(翦翦风)回复于 2005-11-18 16:34:34 得分 20
不显示子窗口的最小化和最大化按钮 下面就能实现呀
Form mid = new MidForm();
mid.ControlBox = true;
mid.MinimizeBox = false;
mid.MaximizeBox = false;
mid.Show();
如果你是想让它们变灰不可用,可以调用api
[DllImport("user32.dll")]
static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
附:
internal const UInt32 SC_MINIMIZE =0xF020;
internal const UInt32 SC_MAXIMIZE =0xF030;
以下是一个把关闭按钮变灰的例
class RemoveXButton
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern int GetMenuItemCount(IntPtr hMenu);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool DrawMenuBar(IntPtr hWnd);
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
private const Int32 MF_BYPOSITION = 0x400;
private const Int32 MF_REMOVE = 0x1000;
public static void RemoveCloseButton(Form frm)
{
IntPtr hMenu;
int n;
hMenu = GetSystemMenu(frm.Handle,false);
if(hMenu != IntPtr.Zero)
{
n = GetMenuItemCount(hMenu);
if(n > 0)
{
RemoveMenu(hMenu, (uint)(n-1), MF_BYPOSITION | MF_REMOVE);
RemoveMenu(hMenu, (uint)(n-2), MF_BYPOSITION | MF_REMOVE);
DrawMenuBar(frm.Handle);
}
}
}
}
Top




