2012-04-18 33 views
1

我試圖仿效this答案,但儘管這樣工作的:爲什麼這個ToolStripControlHost不工作​​?

public class TrackBarMenuItem : ToolStripControlHost 
{ 
    TrackBar trackBar; 
    public TrackBarMenuItem() 
     : base(new TrackBar()) 
    { 
     trackBar = Control as TrackBar; 
    } 
} 

這不:

public class PanelMenuItem : ToolStripControlHost 
{ 
    Panel panel; 
    public PanelMenuItem() 
     : base(new Panel()) 
    { 
     panel = Control as Panel; 
     Visible = true; 
     Enabled = true; 
     panel.AutoSize = false; 
     panel.Size = new Size(100, 50); 
    } 
} 

爲什麼?

我稱他們是這樣的:

contextMenuStrip1.Items.Add(new TrackBarMenuItem()); 
contextMenuStrip1.Items.Add(new PanelMenuItem()); 

回答

6

設置面板的最小尺寸:

public class PanelMenuItem : ToolStripControlHost { 
    Panel panel; 
    public PanelMenuItem() 
    : base(new Panel()) { 
    panel = Control as Panel; 
    Visible = true; 
    Enabled = true; 
    panel.AutoSize = false; 
    panel.Size = new Size(100, 50); 

    panel.MinimumSize = panel.Size; 
    } 
} 
+0

感謝。 (那麼這是否意味着上下文菜單總是使用最小大小?) – ispiro 2012-04-18 13:11:08

+0

@ispiro它是「ToolStripControlHost」,它與其託管的控件的大小有關。在一些像Panel這樣的控件上,它需要設置'MinimumSize'以便它可以被查看。 – LarsTech 2012-04-18 13:15:30