2014-04-27 47 views
0

我真的很难找到合适的资源,因此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; } 
    } 
} 

我[在过去所做的那样,和]想现在要做的就是访问这些属性,一旦我已经创建了一个图片控件,并将其添加到窗体。

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

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

谢谢帕特里克。 –

0

问题:你宣布你的属性staic。静态的memeners属于类级别,但不是实例级别,因此您无法从主体初始化程序初始化它们。

解决方案:您需要通过删除属性的static关键字infront来使你的属性non-static

试试这个:

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

再次感谢您的帮助@Sudhakar。当我有足够的声望这样做时,我会为你的答案投票。尽管如此,我认为我应该接受帕特里克的回答,因为除了他根据S.O首先提供的答案外,两个答案都是一样的。 –

+0

@ spike.y:欢迎你:)很高兴帮助你, –