如何在winform c#中禁用工具条下的行?
替代文字http://img13.imageshack.us/img13/5215/20091217052234.png
这条线?
这是“系统”渲染器中的错误 , 此错误报告中的详细信息。
微软的回复提供了一个非常简单的解决方法:
1)创建ToolStripSystemRenderer
的子类,重写OnRenderToolStripBorder
并使其成为无操作:
public class MySR : ToolStripSystemRenderer { public MySR() { } protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) { //base.OnRenderToolStripBorder(e); } }
2)使用该渲染器作为工具条:
toolStrip3.Renderer = new MySR();
您可能希望添加类型检查以避免在ToolStripDropDownMenu
/ etc上丢失边框。 (由于inheritance自ToolStrip
,它会自动启动相同的自定义渲染器用法):
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e) { if (e.ToolStrip.GetType() == typeof(ToolStrip)) { // skip render border } else { // do render border base.OnRenderToolStripBorder(e); } }
使用ToolStripSystemRenderer
错过的ToolStripDropDownMenu
边框不太明显,但使用ToolStripSystemRenderer
成为真正的眼睛。
另外,设置System.Windows.Forms.ToolStripManager.Renderer = new MySR();
如果您希望appwide的所有ToolStrip
实例默认使用MySR
,则可能MySR
用。