2009-11-16 40 views
1

是否有人知道是否可以打開彈出窗體「輸入掩碼」,當您想要更改MaskedTextBox的Mask屬性時顯示該窗口編輯器,並在設計時點擊此屬性右側的詳細信息按鈕?在運行時顯示MaskedTextBox.Mask屬性的設計時彈出窗口

我想在應用程序的運行時使用相同的表單,並將其結果用於掩碼字符串。

回答

1

該對話框在System.Design.dll中定義,名爲「MaskDesignerDialog」。它是內部的,所以你不能直接使用它。反思可以繞過這一點。試用一個樣本表單,在表單上放置一個Button和一個MaskedTextBox。使表單的代碼如下所示:

using System; 
using System.ComponentModel; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Reflection; 

namespace WindowsFormsApplication1 { 
    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 
     } 
     private void button1_Click(object sender, EventArgs e) { 
      Assembly asm = Assembly.Load("System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"); 
      Type editor = asm.GetType("System.Windows.Forms.Design.MaskDesignerDialog"); 
      ConstructorInfo ci = editor.GetConstructor(new Type[] { typeof(MaskedTextBox), typeof(System.ComponentModel.Design.IHelpService) }); 
      Form dlg = ci.Invoke(new object[] { maskedTextBox1, null }) as Form; 
      if (DialogResult.OK == dlg.ShowDialog(this)) { 
       PropertyInfo pi = editor.GetProperty("Mask"); 
       maskedTextBox1.Mask = pi.GetValue(dlg, null) as string; 
      } 
     } 
    } 
} 
+0

太棒了!這很好,謝謝。 – Leo 2009-11-16 22:31:41

相關問題