繁体   English   中英

访问扩展控件的自定义属性

[英]Accessing custom properties of extended control

我很难找到合适的资源来解决这个问题,并认为也许StackOverflow上的某个人会知道这一点。 我延长在Windows PictureBox控件窗体应用程序,我在过去做这同样事情,但遗憾的是,我不记得我是如何得到它的工作,我希望它的方式。

我的控制代码是:

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

namespace SomeApplication
{
    public class Picture : PictureBox
    {
        public static Bitmap Thumbnail { get; set; }
        public static Bitmap OriginalPhoto { get; set; }
        public static string Name { get; set; }
        public static Int64 Order { get; set; }
    }
}

我[过去已经做过,并且现在想做的是一旦创建了Picture控件并将其添加到窗体中,便可以访问这些属性。

private void Main_Load(object sender, EventArgs e)
{
    this.Controls.Add(new Picture() { Order = 7, Location = new Point(0, 0) });
}

但这不起作用。 我无法从picture1访问任何这些自定义属性。 我只能从实际类型本身访问它们,如下所示:

Picture.Order = 8;

这是没有用的。

我该如何实现?

您应该从属性定义中删除static变量。 这将使属性位于类而不是实例上。

public class Picture : PictureBox
{
    public Bitmap Thumbnail { get; set; }
    public Bitmap OriginalPhoto { get; set; }
    public string Name { get; set; }
    public Int64 Order { get; set; }
}

问题:您宣布财产为staic 静态memener属于类级别,但不属于实例级别,因此您无法从oject初始化程序对其进行初始化。

解决方案:您需要通过删除属性前面的static关键字来使属性变为non-static

尝试这个:

public Bitmap Thumbnail { get; set; }
public Bitmap OriginalPhoto { get; set; }
public string Name { get; set; }
public Int64 Order { get; set; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM