[英]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.