簡體   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