MultiLineTextEditor

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace WindowsFormsApplication1
{
     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;

        }

    }


    public class CustomPropertyGrid
     {
         private string multiLineStr = string.Empty;


         public string SingleLineStr { get; set; }

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


     }
}

原文地址:https://www.cnblogs.com/atuo/p/8176951.html