![](/img/trans.png)
[英]How to cause validation when clicking on a ToolStripButton Menu from a MDI in Windows Form Application?
[英]ToolStripButton disappear from PropertyGrid when user log-in to Windows
我有一個問題,情況如下:
我已經使用一個組件PropertyGrid
創建了用戶控件。 在此PropertyGrid
我向PropertyGrid的ToolStrip
添加了按鈕(十六進制模式)。 一切都很好,效果很好!
但是,當該控件以表格形式顯示並且用戶按"Windows->Switch User"
並使用相同的User Name再次登錄時,我的按鈕(十六進制模式) 消失了 。 還會出現第四個手動隱藏的按鈕...
我不知道會發生什么 Windows是否可能在用戶登錄時重新加載其組件?
Windows 7(x64 / x86)
public partial class CompProperty : UserControl
{
private System.Windows.Forms.ToolStripButton _tsbMode = null;
public CompProperty()
{
InitializeComponent();
createAdditionalButtons();
}
private void createAdditionalButtons()
{
foreach ( Control control in propertyGrid.Controls )
{
ToolStrip toolStrip = control as ToolStrip;
if ( toolStrip != null )
{
toolStrip.Items[4].Visible = false;
_tsbMode = new System.Windows.Forms.ToolStripButton();
_tsbMode.CheckOnClick = true;
_tsbMode.Checked = true;
_tsbMode.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
_tsbMode.Image = Resources.img_edit;
_tsbMode.ImageTransparentColor = System.Drawing.Color.Magenta;
_tsbMode.Name = "tsbMode";
_tsbMode.Size = new System.Drawing.Size( 23, 22 );
_tsbMode.Text = "Heximal Mode";
_tsbMode.ToolTipText = "Heximal Mode";
toolStrip.Items.AddRange( new System.Windows.Forms.ToolStripItem[] {
_tsbMode} );
break;
}
}
}
}
是的,這是設計使然。 當SystemEvents.UserPreferencesChange事件觸發時,PropertyGrid類將重建工具欄。 實際上,這很可能在台式機交換機上觸發。 您可以像這樣修補它:
using System;
using System.Windows.Forms;
class MyPropertyGrid : PropertyGrid {
protected override void OnSystemColorsChanged(EventArgs e) {
// Do nothing
}
}
當然不理想。 冷酷的事實是,這根本不受支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.