我正在创建一个表单,并在加载时从我的资源文件夹中获取所有图像,并为每个文件创建一个新按钮,将按钮背景图像设置为该图像并将该按钮添加到表单,但它只显示1个按钮,资源文件夹中有36个文件。
我的代码如下:
ResourceSet resourceSet = Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
foreach (DictionaryEntry entry in resourceSet)
{
object resource = entry.Value;
Button b = new Button();
b.BackgroundImage = (Image)resource;
b.BackgroundImageLayout = ImageLayout.Stretch;
b.Height = 64;
b.Width = 64;
this.Controls.Add(b);
}
请协助我做错了什么。
答案 0 :(得分:5)
我的猜测是代码确实添加了所有按钮,但它们都是彼此重叠的。每个按钮都有Left
和Top
的默认值,每个按钮的默认值都相同。由于按钮都具有相同的尺寸,因此只有顶部按钮可见。
通过为每个按钮设置Left
和Top
属性来解决问题。显然,每个不同的按钮需要具有Left
和Top
的不同值。
要回答您在评论中提出的问题,您可以按以下方式使用代码:
const int buttonSize = 64;
int left = 0;
int top = 0;
foreach (DictionaryEntry entry in resourceSet)
{
object resource = entry.Value;
Button b = new Button();
b.BackgroundImage = (Image)resource;
b.BackgroundImageLayout = ImageLayout.Stretch;
b.Bounds = Rectangle(left, top, buttonSize, buttonSize);
this.Controls.Add(b);
// prepare for next iteration
left += buttonSize;
if (left+buttonSize>this.ClientSize.Width)
{
left = 0;
top += 64;
}
}