我正在创建一个数字时钟用户控件。这是代码:
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中的代码添加用户控件解决。非常感谢你的帮助。
答案 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来确定组件根目录的位置。您可以将时钟图像放入装配体旁边的文件夹中。通过这样做,部署将变得简单明了。