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

时间:2014-04-27 07:55:07

标签: c# .net winforms

我很难为此寻找合适的资源,并认为StackOverflow上的某个人可能会知道这一点。我在Windows窗体应用程序中扩展了PictureBox控件,我在过去做过 exact 同样的事情,但不幸的是,我不记得我是如何按照我想要的方式工作的。< / p>

我的控制代码是:

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;

没用。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您应该从属性定义中删除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; }
}

答案 1 :(得分:0)

问题:您已将自己的媒体资源声明为staic。静态memeners属于类级别但不属于实例级别,因此您无法从oject初始化程序初始化它们。

解决方案:您需要删除属性前面的non-static关键字,才能使您的媒体资源static

试试这个:

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