我很难为此寻找合适的资源,并认为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;
没用。
我怎样才能做到这一点?
答案 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; }