【发布时间】:2012-09-13 08:30:23
【问题描述】:
我有一个Picturebox,用户可以从资源文件中选择它的backgroundimage。
稍后我想从picturebox 中取出resourcename。
我已经试过了:
MessageBox.Show(((PictureBox)sender).BackgroundImage.ToString());
但它给了我图片的格式..没有类似的东西:
MessageBox.Show(((PictureBox)sender).BackgroundImage.Name.ToString());
我已经考虑过在设置图像时将Tag 设置为Picturebox 和picturename...但这很烦人...
那么我怎样才能轻松地在Picturebox 上获得用作backgroundimage 的资源名称?
我想我必须解释整个情况:
我有一个带有很多 raidbuttons 的表格...
如果您选择其中一个按钮并单击面板,
面板将变为所选单选按钮图像...
面板的点击事件:
PanelClick(object obj ,...)
{
if(radiobuttonApple.checked)
{
obj.backgroundimage = resource.apple;
}
if(radiobuttonPear.checked)
{
obj.backgroundimage = resource.Pear;
}
}
还有一百多个... 后来我想知道背景图像是哪个资源文件..
有没有这样的:
(如果我将单选按钮命名为资源)
PanelClick(object obj ,...)
{
obj.backgroundimage = resource[selectedradiobutton.Name]
obj.tag = selectedradiobutton.Name
}
所以现在我要使用 LINQ:
RadioButton checkedRadioButton = panel1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);
obj.tag = checkedRadioButton.Text;
所以我只需要知道如何通过名称获取动态资源,例如:
obj.backgroundimage = resource[checkedRadioButton.Text];
并且滥用资源管理器:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Pictures",
System.Reflection.Assembly.GetExecutingAssembly()
)
var image = resman.GetPicture("checkedRadioButton.Text");
我希望这会奏效..
【问题讨论】:
-
我会选择
Tag解决方案。多写一行代码有什么烦人的?它不必直接在PictureBox上。您可以在初始化时为图像本身设置标签。 -
我可以通过 Visual Studio 中的资源设计器设置标签吗?我只看到评论栏...
-
大约有 100 张不同的图片,这就是为什么我不想为每个代码设置标签...
-
为什么不在将资源分配给图片框之前设置标签?是一条线,不是吗?
-
如果我能得到资源的名称,这将是一行......嗯,但我想我可以从选定的 Radiobutton 中得到名字......
标签: c# image resources picturebox resource-files