1
是否有人知道是否可以打開彈出窗體「輸入掩碼」,當您想要更改MaskedTextBox的Mask屬性時顯示該窗口編輯器,並在設計時點擊此屬性右側的詳細信息按鈕?在運行時顯示MaskedTextBox.Mask屬性的設計時彈出窗口
我想在應用程序的運行時使用相同的表單,並將其結果用於掩碼字符串。
是否有人知道是否可以打開彈出窗體「輸入掩碼」,當您想要更改MaskedTextBox的Mask屬性時顯示該窗口編輯器,並在設計時點擊此屬性右側的詳細信息按鈕?在運行時顯示MaskedTextBox.Mask屬性的設計時彈出窗口
我想在應用程序的運行時使用相同的表單,並將其結果用於掩碼字符串。
該對話框在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;
}
}
}
}
太棒了!這很好,謝謝。 – Leo 2009-11-16 22:31:41