来自随机位置的用户控件加载文件的构造方法

时间:2014-04-01 04:38:18

标签: c# winforms

我正在创建一个数字时钟用户控件。这是代码:

public partial class DigitalClockControl : UserControl
{
    public DigitalClockControl()
    {
        InitializeComponent();
    }
    private static List<Image> Sprite;
    private static Clock data;
    public Clock Data
    {
        get { return DigitalClockControl.data; }
        set { DigitalClockControl.data = value;
        int min = data.Min;
        int sec = data.Sec;
        Min1.Image = Sprite[min / 10];
        Min2.Image = Sprite[min % 10];
        Sec1.Image = Sprite[sec / 10];
        Sec2.Image = Sprite[sec % 10];
        }
    }   

    private void DigitalClockControl_Load(object sender, EventArgs e)
    {
        Sprite = new List<Image>();
        LoadSprite();
        data = new Clock();
    }

    private void LoadSprite()
    {
        string path = Directory.GetParent((Directory.GetParent((Directory.GetCurrentDirectory().ToString())).ToString())).ToString();
        Image img;
        for (int i = 0; i <= 9; ++i)
        {
            img = Image.FromFile(path + "\\" + i.ToString() + ".png");
            Sprite.Add(img);
        }     
    }
}

当我尝试将此用户控件拖到表单时,它引发了如下错误:

Failed to create component 'DigitalClockControl'. The error messages follows:'System.IO.FileNotFoundException: D:\\0.png...

我不知道它为什么从D:\加载图像。所有图像都在上面的路径上。如果我将图像复制到D:\,程序运行正常。我试图转到InitializeComponent()函数,但无法提交任何代码使程序加载图像。

编辑:通过Form.cs中的代码添加用户控件解决。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您应将所有图片放入debug\\bin\\images文件夹。因此,当您安装应用程序时,您可以在应用程序文件夹(Application.StartupPat + "\\Images")中找到所有图像。

<强> CODE:

string path = Application.StartupPath + "\\Images";
Image img;
for (int i = 0; i <= 9; ++i)
{
    img = Image.FromFile(path + "\\" + i.ToString() + ".png");
    Sprite.Add(img);
}    

答案 1 :(得分:0)

或者,您可以使用Assembly.GetExecutingAssembly()(即包含控件的程序集)并使用其Location Property来确定组件根目录的位置。您可以将时钟图像放入装配体旁边的文件夹中。通过这样做,部署将变得简单明了。