首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在winforms的PropertyGrid中裁切文本并显示三个点

,可以通过自定义属性的方式来实现。具体步骤如下:

  1. 创建一个自定义属性类,继承自PropertyDescriptor类,并重写GetValue和SetValue方法。在GetValue方法中,获取属性值并进行裁切处理,在SetValue方法中,设置属性值。
代码语言:csharp
复制
public class EllipsisTextPropertyDescriptor : PropertyDescriptor
{
    private PropertyDescriptor originalPropertyDescriptor;

    public EllipsisTextPropertyDescriptor(PropertyDescriptor originalPropertyDescriptor)
        : base(originalPropertyDescriptor)
    {
        this.originalPropertyDescriptor = originalPropertyDescriptor;
    }

    public override bool CanResetValue(object component)
    {
        return originalPropertyDescriptor.CanResetValue(component);
    }

    public override Type ComponentType
    {
        get { return originalPropertyDescriptor.ComponentType; }
    }

    public override object GetValue(object component)
    {
        string originalValue = originalPropertyDescriptor.GetValue(component) as string;
        if (originalValue != null && originalValue.Length > 10)
        {
            return originalValue.Substring(0, 10) + "...";
        }
        return originalValue;
    }

    public override bool IsReadOnly
    {
        get { return originalPropertyDescriptor.IsReadOnly; }
    }

    public override Type PropertyType
    {
        get { return originalPropertyDescriptor.PropertyType; }
    }

    public override void ResetValue(object component)
    {
        originalPropertyDescriptor.ResetValue(component);
    }

    public override void SetValue(object component, object value)
    {
        originalPropertyDescriptor.SetValue(component, value);
    }

    public override bool ShouldSerializeValue(object component)
    {
        return originalPropertyDescriptor.ShouldSerializeValue(component);
    }
}
  1. 在需要使用PropertyGrid的窗体中,将需要裁切文本的属性添加到PropertyGrid中,并使用自定义属性类进行包装。
代码语言:csharp
复制
public partial class Form1 : Form
{
    private MySettings settings;

    public Form1()
    {
        InitializeComponent();
        settings = new MySettings();
        propertyGrid1.SelectedObject = settings;
    }
}

public class MySettings
{
    [Category("General")]
    [Description("The name of the item.")]
    [DisplayName("Item Name")]
    [TypeConverter(typeof(EllipsisTextConverter))]
    public string ItemName { get; set; }
}

public class EllipsisTextConverter : TypeConverter
{
    public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
    {
        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value, attributes);
        PropertyDescriptorCollection newProperties = new PropertyDescriptorCollection(null);

        foreach (PropertyDescriptor property in properties)
        {
            if (property.PropertyType == typeof(string))
            {
                newProperties.Add(new EllipsisTextPropertyDescriptor(property));
            }
            else
            {
                newProperties.Add(property);
            }
        }

        return newProperties;
    }
}

通过以上步骤,就可以在PropertyGrid中裁切文本并显示三个点。在自定义属性类中,可以根据需要修改裁切的长度。这样可以保证在PropertyGrid中显示的文本不会过长,同时又能显示关键信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用ScottPlot库.NET WinForms快速实现大型数据集交互式显示

前言 .NET应用开发数据集交互式显示是一个非常常见功能,如需要创建折线图、柱状图、饼图、散点图等不同类型图表将数据呈现出来,帮助人们更好地理解数据、发现规律,支持决策和沟通。...本文我们将一起来学习一下如何使用ScottPlot库.NET WinForms快速实现大型数据集交互式显示。...ScottPlot类库介绍 ScottPlot是一个免费、开源(采用MIT许可证)强大.NET交互式绘图库,能够轻松地实现大型数据集交互式显示。...将FormsPlot (ScottPlot.WinForms)从工具箱拖到窗体: 输入以下代码: public partial class LineChart : Form {...new(); tickGen.MinorTickGenerator = minorTickGen; //创建一个自定义刻度格式化程序,用于设置每个刻度标签文本

31510

【Eclipse】eclipse让Button选择文件显示文本框里

在给定代码片段,使用了Float.parseFloat(text)方法将文本转换为浮点数。然后,使用逻辑运算符进行条件判断,如果转换后浮点数大于0或小于0,则执行相应操作。...问题:Eclipse如何实现让Button选择文件显示文本框里?回答:Eclipse,可以使用Java Swing库来实现让Button选择文件显示文本框里功能。...首先,需要创建一个JButton对象和一个JTextField对象,并将它们添加到一个JFrame或JPanel。...当用户点击按钮时,可以通过JFileChooser选择文件,并将文件路径显示文本。...具体实现代码可以参考以下示例: import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton

13710

【愚公系列】2023年11月 WPF控件专题 WindowFormsHost控件详解

欢迎 赞✍评论⭐收藏前言WPF控件是Windows Presentation Foundation(WPF)基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...代码,我们可以像访问其他WPF控件一样访问嵌入WinForms控件。...常见场景有:WPF应用程序中使用Windows Forms控件:有些Windows Forms控件具有WPF没有的功能或特性,如PropertyGrid控件。...3.具体案例WindowFormsHost控件用于WPF窗口中嵌入WinForms控件,可以方便地WPF应用程序中使用WinForms控件。...以下是一个简单案例,展示如何在WPF窗口中嵌入WinForms控件,以及WinForms控件中使用WPF控件。Visual Studio创建一个WPF应用程序。

77541

【CSS】文字溢出问题 ( 强制文本一行显示 | 隐藏文本超出部分 | 使用省略号代替文本超出部分 )

一、文字溢出问题 ---- 元素对象内部显示文字 , 如果文本过长 , 则会出现文本溢出问题 ; 下面的示例 , 150x25 像素盒子 , 显示 骐骥一跃,不能十步;驽马十驾,功不舍;...; 显示效果 : 二、文字溢出处理方案 ---- 文字溢出处理方案 : 首先 , 强制文本一行显示 ; white-space: nowrap...文本显示方式 : 默认方式 : 显示多行 ; white-space: normal; 显示一行 : 强行将盒子文本显示一行 ; white-space: nowrap; text-overflow...样式 用于设置 文字溢出处理方案 : 默认方式 - 简单裁切 : 不显示 ....../title> div { width: 150px; height: 25px; border: 1px solid red; /* 首先 强制文本一行显示

4K10

强大PropertyGrid

把要编辑对象看成类的话, 所有要编辑属性就是成员 嗯嗯, 最近看了几眼Ogitor, 它对于PropertyGrid使用就很不错 所有要编辑对象(灯光, 模型, 粒子等等)都有一个共同基类,...每当选中一个可编辑对象时, 右边属性框里就显示出当前对象属性......(公司那个编辑器要多土就有多土-_-) 尽管Ribbon界面看起来很酷, 我还是对MFC提不起兴趣来... .net里PropertyGrid更方便, 一来: 属性自动绑定: ref class...->SelectedObject = gcnew Human(); 它就能自动识别出Human类property, 并且自动关联到PropertyGrid: ?...对于枚举类型, PropertyGrid会自动显示成下拉框. 把性别改成枚举看看: enum struct SexType { Male, Female }; ?

1K50

“老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

.NET,实现这种通知功能接口就是:  INotifyPropertyChanged 它定义System.dll ,早在 .NET 2.0 就已经支持。...首先定义了一个视图模型对象 DataContext,方法 BindDataControls 里面作为绑定到视图控件上对象,它里面的 CurrentUser属性Name属性绑定到了文本框控件上,所以...创建MVVMWinForm视图 这是一个简单WinForm 窗体,有三个SOD“数据控件”,包括:一个标签控件显示用户ID,文本框控件显示用户名,一个列表框控件显示已经有用户列表,三个按钮分别用来向列表添加...由于这里我们要绑定对象是当前窗体DataContext对象,所以需要浏览选择到主程序集,这样属性名称一栏,会显示此对象所有的属性和子属性。...SOD WinForms MVVM支持 自SOD框架版本 5.6.0.1111 发布这个“光棍节“版本,您已经可以在此以后版本获得直接WinForms MVVM支持,如果是之前版本,那么需要本示例程序一样稍微多做一工作

3.7K60

如何在.NET电子表格应用程序创建流程图

企业环境,高管和经理利用流程图来规划业务流程,使他们能够识别瓶颈、优化生产力增强决策能力……用例列表不胜枚举。然而,一个新问题出现了,这些流程图由谁来维护?流程图如何共享或协作?....NET WinForms 创建流程图 .NET WinForms 创建流程图可分为以下8个步骤: 设置.NET WinForms 项目 启用增强形状引擎 将形状添加到电子表格流程图 将文本添加到形状...将形状添加到电子表格流程图 将样式应用到形状 分组流程图形状 .NET WinForms 应用程序中保存显示流程图 1.设置.NET WinForms 项目 打开Visual Studio软件,...如果想要在运行时显示 FpSpreadDesigner, Forms1.cs 文件按钮单击事件调用 Spread Designer API ShowDialog方法即可。...操作步骤如下方动图所示: 8. .NET WinForms 应用程序中保存显示流程图 设计完流程图之后,就可以将设计器电子表格应用到 WinForms 应用程序了。

21720

运行时自定义PropertyGrid显示属性项目

运行时自定义PropertyGrid显示属性项目 简述 PropertyGrid显示属性内容包括属性分类(Category)及组件属性, 在一般情况下直接使用PropertyGrid显示一个对象所有属性是非常方便...,只需一个语句就能完成: propertyGrid.SelectedObject = component; 但在实际应用可能会不需要显示所有属性项目,而是通过外部指定(通过XML等进行描述),这些设置一般情况下在创建组件时用代码...问题描述 像上面所说,创建自建组件时可以用Attribute方式来设置PropertyGrid显示样式,但这种方法不能应用于已有的组件,像系统TextBox,Button等,除非自己建立一个由这些组件派生类...PropertyGrid中所显示属性名称都还是原有名称,若想同时改变在PropertyGrid显示出来名称则需要重写PropertyDescriptor部分方法,在上面这段代码CustomPropertyDescriptor...,便可以将PropertyGrid显示内容完全自定义。

1.3K20

C# WinForm PropertyGrid用法

关于C# PropertyGrid用法没有找到,找到一个C++用法。 模仿着使用了一下,感觉挺不错,分享一下。 基本用法: 拖个PropertyGrid,绑定一个属性类就行了。...InitializeComponent();         }         private void Form1_Load(object sender, EventArgs e)         {             propertyGrid1...                get { return _Hi; }                 set { _Hi = Hi; }             }         }     } } 它能自动识别Go类属性...对属性进行分类加注释: class Go {     private float _TieMu = 5.5f;     private string _Rule = "数子法";     [CategoryAttribute...使用Color类型可以显示颜色选择下拉框,使用Image类型可以显示图片选择对话框,真强大。

2K20

.NET Core - 解决VS2019.net core WinForms暂时无法使用Designer临时方法

具体解决方法是同一个 Solution下创建两个项目: 用于设计WinForms应用程序.NET Framework应用程序(.net Framework 项目) 用于运行WinForms应用程序...核心思想同样是借壳~ 该方法,只要添加新Win Form或新UserControl,就需要在Classic Framework WinForms项目(.net FrameworkWin Forms...项目)重新设置Form文件嵌套层级关系,推荐使用Mad Kristensen文件嵌套扩展来完成这件事,而不是使用文本编辑器来修补项目文件(.csproj文件),建议事先安装好该vs插件。... OK继续. 再进行一次重命名 将.Designer项目下Program.csForm1改为MainForm. ?...那是因为项目CoreHelloForm.DesignerMainForm.cs 所Link 与MainForm相关文件已经 项目CoreHelloForm 打开。

2.2K30

【愚公系列】2023年11月 Winform控件专题 CheckedListBox控件详解

欢迎 赞✍评论⭐收藏前言Winform控件是Windows Forms用户界面元素,它们可以用于创建Windows应用程序各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、...然后处理了ItemCheck事件,事件处理程序根据用户选择项来作出相应响应。...多项选择:如果你需要让用户多个选项之间进行选择,可以使用CheckedListBox来显示这些选项,让用户对其中多个选项进行选择。例如,一个选项卡控件可以让用户选择一个或多个标签页。...消息框显示用户选择或取消选择文本。要获取选定项索引,我们可以使用ItemCheckEventArgs对象Index属性。...最后,我们弹出一个消息框,显示用户选择所有项目的文本。这是一个非常基本示例,演示如何在Winforms应用程序中使用CheckBoxList控件。

97311

详解:32text-overflow各种值

核心知识;第一个classbox1我不讲你也懂是吧 那第二个呢?他是what?overflow:hidden;它代表超过我们所定义宽高就会超过部分会被裁剪。 第三个呢?...若为text-overflow:clip 简单裁切 若为text-overflow:ellipsis 当对象内文本溢出时(超过宽高时)显示省略标记(…) ,我理解是裁剪然后用。。。...代替超过部分 最后说一句,不要嫌我啰嗦,就是写这种时候记得用边框solid啊,为什么,好看一 white-space: nowrap;规定段落文本不进行换行:你想一想,结合起来使用哈...,我们可以同设置text-overflow如何处理,是否显示...省略标记,this is a test 当文本超出容器大小时候,我们可以同设置text-overflow...如何处理,是否显示...省略标记,this is a test 当文本超出容器大小时候,我们可以同设置text-overflow如何处理,是否显示...

53120

使用react-cropper-pro实现图片裁切压缩上传

大厂技术 坚持周更 精选好文 在前端开发过程, 我们经常遇到文件上传或者图片上传需求, 有些场景可能还会要求上传图片后对图片进行裁切, 压缩....最终为了实现想要效果,我还是决定牺牲自己, 手动实现一个支持上传裁切压缩组件, 取名为react-cropper-pro. 2022-07-16 16.02.04.gif react-cropper-pro...image.png 其实很简单, 就是用定位方式将一个同样大小div覆盖input上面, 然后把让div事件穿透, 能响应input事件即可....我们需要实现效果是图片上传后会出现上传弹窗, 显示裁切区域, 如下: 2022-07-16 16.02.04.gif 这里弹窗实现我采用了React-DomcreatePortal API, 它可以实现弹窗..., 当然还有很多内容平台, 因为有富文本或者md等编辑器写作能力, 所以也会涉及到对图片控制, 所以这些都是 react-cropper-pro 应用领域.

2.2K10

PropertyGrid枚举显示为中文

本文转载:http://www.cnblogs.com/yank/archive/2011/09/17/2179598.html ropertyGrid枚举显示为中文 系统开发,经常会使用PropertyGrid...来修改或者展示某个对象属性,如果类定义了枚举,展现时候默认会展示枚举项或者枚举值,但是这并不是我们想要。...用户使用时候并不清楚该项代表意思。之前介绍过枚举显示中文一篇文章,大家可以看下,枚举显示中文。 想要效果: ? PropertyGrid枚举显示,又比较复杂一些。...PropertyGrid显示复杂属性需要TypeConverter,也就是一个转换 器,可以对其进行设置,显示我们想要格式、内容。...本文实现原理: TypeConverter对枚举类型进行转换,但是这个 TypeConverter针对所有的枚举对象,所有的枚举转换器都可以采用此接口,枚举显示时候调用TypeConverter

1.1K20

【愚公系列】2023年12月 GDI+绘图专题 Font

欢迎 赞✍评论⭐收藏 前言 WinForm,Font是用于控件显示文本字体。它是一个封装了字体族、字号、字体样式类。...一、font 1.FontStyle FontStyle是WinForms中用于定义文本字体风格枚举。它允许您指定字体样式,例如粗体、斜体、下划线等。...2.FontFamily FontFamily是WinForms中用于表示字体系列类。它允许您选择应用程序中使用字体系列,从而控制文本外观。字体系列通常包括多种字体,如常规、粗体、斜体等。...3.GraphicsUnit WinForms,GraphicsUnit是一个枚举类型,用于指定测量文本和图形单位。...通过使用GraphicsUnit和ConvertUnits方法,您可以不同单位之间进行转换,以确保文本和图形不同环境下显示一致。

16610
领券