PropertyGrid中的字符串類似Visual Studio的編輯器最簡單的方法是什麼?例如在Autos/Locals/Watches中,您可以在線預覽/編輯字符串值,但您也可以單擊放大鏡並在外部窗口中看到字符串。C#屬性網格字符串編輯器
7
A
回答
8
你可以通過UITypeEditor
來做到這一點,如下所示。在這裏,我用它在一個單獨的屬性,但IIRC你也可以顛覆所有字符串(這樣你就不需要裝飾的所有屬性):
using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using(var frm = new Form { Controls = { new PropertyGrid {
Dock = DockStyle.Fill, SelectedObject = new Foo { Bar = "abc"}}}})
{
Application.Run(frm);
}
}
}
class Foo
{
[Editor(typeof(FancyStringEditor), typeof(UITypeEditor))]
public string Bar { get; set; }
}
class FancyStringEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
var svc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
if (svc != null)
{
using (var frm = new Form { Text = "Your editor here"})
using (var txt = new TextBox { Text = (string)value, Dock = DockStyle.Fill, Multiline = true })
using (var ok = new Button { Text = "OK", Dock = DockStyle.Bottom })
{
frm.Controls.Add(txt);
frm.Controls.Add(ok);
frm.AcceptButton = ok;
ok.DialogResult = DialogResult.OK;
if (svc.ShowDialog(frm) == DialogResult.OK)
{
value = txt.Text;
}
}
}
return value;
}
}
要爲所有應用此字符串成員:代替將[Editor(...)]
,適用於應用程序的早期某處如下:
TypeDescriptor.AddAttributes(typeof(string), new EditorAttribute(
typeof(FancyStringEditor), typeof(UITypeEditor)));
+0
我實際上應該低估你的答案,因爲它鼓勵我採取偷懶的方式,只是複製和粘貼你的代碼。 ;) – John
+0
是的這段代碼是完美的,簡單的,馬上就可以工作。謝謝 – IEnumerable
相關問題
- 1. 屬性網格自定義編輯器
- 2. GetStrValue在定製屬性編輯器上返回空字符串
- 3. 不能在C#中從表格到字符串屬性編寫字符串
- 4. 編輯數組/列表屬性網格
- 5. Python字符串編輯器
- 6. C#屬性網格
- 7. C#定製屬性編輯器
- 8. EXTJS:編輯器網格 - 插入具有不同屬性的行
- 9. 如何在屬性網格中編輯可擴展屬性的字段?
- 10. 在劍道網格中使用屬性格式化字符串
- 11. 的Java屬性編輯器 - 如何強制我創建了一個屬性編輯器屬性編輯器
- 12. 編輯字符串距編輯距離最短的字符串
- 13. 使用字典的屬性網格中的自定義編輯器
- 14. Java Swing屬性編輯器
- 15. 編輯器的html屬性
- 16. TColumn.FieldName屬性編輯器
- 17. 網格彈出編輯器中的可編輯網格
- 18. 字典(字符串,字符串)項目屬性C#中缺失
- 19. Dimensionnion屬性的格式字符串SSAS
- 20. 屬性編輯器不適用於類型轉換,但字符串操作
- 21. pydev編輯器字符串顏色
- 22. VS編輯器中的長字符串
- 23. jComboBox編輯器返回空字符串
- 24. 如何在C#中編輯類似編輯的字符串?
- 25. 編輯GtkWidget屬性/屬性
- 26. c#字符串作爲html屬性
- 27. c#DataBinding通用的字符串屬性
- 28. 屬性中的c#字符串參數
- 29. C#,屬性使用字符串
- 30. 編輯VS2010集合編輯器中的字符串集合
你可以做*的這部分*用自己的UITypeEditor的。 –