嘗試過
- 子視窗的 [MaximizeBox = false 和 MinimizeBox = false] 或 [FormBorderStyle = FormBorderStyle.None],該兩種設定在子視窗非最大化的情況下是會有作用,但子視窗最大化後,還是會出現系統按鈕
- 子視窗的 ControlBox 設為 false,不論子視窗是否最大化,都不會出現系統按鈕,但是子視窗在最大化情況下,沒有標題列
改善方式:在 MDI Form(父視窗) 上加上 MenuStrip 控件,並透過 ItemAdd Event 來判斷並顯示[關閉] Button
namespace MDIMax
{
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
}
private void ParentForm_Load(object sender, EventArgs e)
{
// MID Form (父視窗) 設定
this.IsMdiContainer = true;
this.WindowState = FormWindowState.Maximized;
this.menuStrip1.ItemAdded += menuStrip1_ItemAdded;
// 呼叫子視窗
ChildForm c = new ChildForm();
c.MdiParent = this;
c.WindowState = FormWindowState.Maximized;
c.Show();
}
void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)
{
// 一律先隱藏
e.Item.Visible = false;
string Text = e.Item.Text;
if (!string.IsNullOrEmpty(Text) && Text.Substring(0, 2) == "關閉")
e.Item.Visible = true;
}
}
}
該作法缺點:因為是透過 e.Item.Text 來判斷是哪個按鈕,假如不同語系情況下,應該就 GG 了,Orz
沒有留言:
張貼留言