如何不显示子窗口的最小化和最大化按钮

dreamfeer 2005-11-15 09:59:54
如题,我把controlbox ,max minmizebox属性都false还是没用,还有什么方法?
...全文
493 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
江东闲客 2005-11-18
  • 打赏
  • 举报
回复
不显示子窗口的最小化和最大化按钮 下面就能实现呀
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);
}
}
}

}

dreamfeer 2005-11-18
  • 打赏
  • 举报
回复
不是我想要的啊。

childwindow最大化有那3个最大、最小、关闭按钮,有办法不显示吗?

我想象应该重绘才能做到吧???
dreamfeer 2005-11-15
  • 打赏
  • 举报
回复
忘了说:子窗口是最大化状态
dreamfeer 2005-11-15
  • 打赏
  • 举报
回复
以上2个方法都不行啊。
Macosx 2005-11-15
  • 打赏
  • 举报
回复
我按你的做了 可以啊
q_po_o 2005-11-15
  • 打赏
  • 举报
回复
转贴

frm.MdiParent = this;
frm.ControlBox = false;
frm.Show();
frm.Focus();
frm.Dock = DockStyle.Fill;
xujiaoxiang 2005-11-15
  • 打赏
  • 举报
回复
controlbox ,max minmizebox属性都false还是没用?
那你试试这个FormBorderStyle属性
q_po_o 2005-11-15
  • 打赏
  • 举报
回复
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;
}
}
zxf_hay 2005-11-15
  • 打赏
  • 举报
回复
formborderstyle=fixeddialog
maximizebox=false
minmizebox=false
showintaskbar=false
zxf_hay 2005-11-15
  • 打赏
  • 举报
回复
FormBorderStyle=fixedDialog

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧