c# - 如何在 WinForms 中扩展控件?

标签 c# .net winforms

任何控件。但最好是全部(TextBox、Panel、Button、LinkLabel、TabControl 等)。我想做的是:

public class Something
{
   public String isBetterThan { get; set; }
   public String Author { get; set; }
}

public void button1_Click(object sender, EventArgs e)
{
   panelControl1.ClassObject = new Something()
      {
         isBetterThan = "nothing.",
         Author = "Unknown"
      };
}

所以从上面的代码中,您可以看到它的作用类似于 .Location 属性,您可以在其中为其分配一个新值。我想存储这些信息,以便以后我可以简单地这样做:

public void getClassDetailsButton_Click(object sender, EventArgs e)
{
   Something something = (Something)panelControl1.ClassObject;
   MessageBox.Show("Something is better than " + something.isBetterThan);
}

最佳答案

您可以通过继承要添加功能的控件来创建自定义控件。像这样的东西应该可以工作(以按钮为例)

using System;
using System.Collections.Generic;
using System.Linq; 
using System.Text;
using System.Windows.Forms; 

namespace WindowsFormsApplication1
{
    class SomethingButton : Button
    {
        public Something mySomething
        { get; set; }
    }

    public class Something
    {
        public String isBetterThan { get; set; }
        public String Author { get; set; }
    }

}

用法

somethingButton1.mySomething = new Something() { isBetterThan = "nothing", 
                                                 Author = "Unknown" 
                                               };

关于c# - 如何在 WinForms 中扩展控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18069179/

相关文章:

c# - 使用参数运行 ASP.NET 页面?

c# - 如何从 Visual Studio 加载项中获取正在运行的进程的堆栈跟踪?

c# - Xamarin.Forms 不可点击的 ListView(移除选择涟漪效应)

c# - 如何使用 LINQ 选择未知子元素位置的子节点

c# - RaisePropertyChanged - 将代码从 C# 转换为 VB.NET 时出错

c# - 在对象名称中使用变量

c# - 如何以编程方式打开病毒扫描程序?

.net - JSON.NET 返回未格式化的字符串

c# - GraphicsPath.Flatten() 对绘图性能有何影响?

c# - 删除 Doc 文件并保留 Docx 文件