簡體   English   中英

用戶登錄Windows時,ToolStripButton從PropertyGrid中消失

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM