2008-09-24 6 views

उत्तर

47
का उपयोग करता है

मुझे लगता है कि System.Design.dll पाया System.ComponentModel.Design.MultilineStringEditor जो इस प्रकार इस्तेमाल किया जा सकता है:

public class Stuff 
{ 
    [Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))] 
    public string MultiLineProperty { get; set; } 
} 
+0

आपको .NET Framework का कौन सा संस्करण मिला है? –

+0

http://msdn.microsoft.com/en-us/library/system.componentmodel.design.multilinestringeditor.aspx इंगित करता है कि यह 2.0, 3.0 और 3.5 में है। – fryguybob

+0

इसका उपयोग कैसे करें? मैं लिखने की कोशिश कर रहा हूं [संपादक (टाइपोफ (मल्टीलाइनस्ट्रिंग एडिटर), टाइपोफ (यूआईटीपीएडडिटर)) [श्रेणी एट्रिब्यूट ("Misc"), विवरण ("इस मेल के लिए सभी http शीर्षलेख"), डिस्प्लेनाम ("HTTP शीर्षलेख") ] सार्वजनिक स्ट्रिंग HttpHeaders { {वापसी मेल। HttpHeaders; } } लेकिन यह HttpHeaders को multiline के रूप में प्रदर्शित नहीं करता है। – Alex

2

नहीं, आपको एक मॉडल यूआई प्रकार संपादक कहलाए जाने की आवश्यकता होगी। आपको UITypeEditor से विरासत प्राप्त करने वाली कक्षा बनाने की आवश्यकता होगी। यह मूल रूप से एक रूप है जो दिखाया जाता है जब आप उस संपत्ति के दाहिने तरफ इलिप्सिस बटन पर क्लिक करते हैं जिसे आप संपादित कर रहे हैं।

मुझे मिली एकमात्र कमी यह थी कि मुझे विशिष्ट स्ट्रिंग प्रॉपर्टी को एक विशिष्ट विशेषता के साथ सजाने की आवश्यकता थी। ऐसा कुछ समय हो गया है क्योंकि मुझे ऐसा करना था। मुझे क्रिस बेल्स द्वारा एक पुस्तक से यह जानकारी मिली है जिसे "विंडोज फॉर्म प्रोग्रामिंग इन सी #"

विजुअलहिंट द्वारा Smart PropertyGrid.NET नामक व्यावसायिक प्रॉपर्टीग्रीड है।

0

हां। मैं काफी याद नहीं है कि यह कैसे कहा जाता है, लेकिन ComboBox की तरह कुछ के लिए आइटम संपत्ति संपादक को देखो

संपादित: @fryguybob के रूप में, ComboBox.Items System.Windows.Forms.Design.ListControlStringCollectionEditor

+0

ComboBox.Items System.Windows.Forms.Design.ListControlStringCollectionEditor का उपयोग करता है मैं डॉन ऐसा नहीं लगता कि मैं काफी खोज रहा हूं, लेकिन यह करीब है। – fryguybob

0

हम संपत्ति ग्रिड में बहु समर्थन प्राप्त करने के हमारे कस्टम संपादक लिखने के लिए की जरूरत है।

यहाँ, ग्राहक पाठ संपादक वर्ग UITypeEditor

से लागू
public class MultiLineTextEditor : UITypeEditor 
    { 
     private IWindowsFormsEditorService _editorService; 

     public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 
     { 
      return UITypeEditorEditStyle.DropDown; 
     } 

     public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) 
     { 
      _editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); 

      TextBox textEditorBox = new TextBox(); 
      textEditorBox.Multiline = true; 
      textEditorBox.ScrollBars = ScrollBars.Vertical; 
      textEditorBox.Width = 250; 
      textEditorBox.Height = 150; 
      textEditorBox.BorderStyle = BorderStyle.None; 
      textEditorBox.AcceptsReturn = true; 

      textEditorBox.Text = value as string; 

      _editorService.DropDownControl(textEditorBox); 

      return textEditorBox.Text; 

     } 

    } 

Write your custom property grid and apply this Editor attribute to the property 

class CustomPropertyGrid 
    { 
     private string multiLineStr = string.Empty; 

     [Editor(typeof(MultiLineTextEditor), typeof(UITypeEditor))] 
     public string MultiLineStr 
     { 
      get { return multiLineStr; } 
      set { multiLineStr = value; } 
     } 


    } 

मुख्य रूप में इस वस्तु आवंटित

propertyGrid1.SelectedObject = new CustomPropertyGrid(); 
संबंधित मुद्दे