我有一个Picturebox,用户可以从backgroundimage资源文件中选择它。
后来我想resourcename摆脱picturebox。
我已经尝试过这个:
MessageBox.Show(((PictureBox)sender).BackgroundImage.ToString());
但它给了我图片的格式..没有类似的东西:
MessageBox.Show(((PictureBox)sender).BackgroundImage.Name.ToString());
并且我已经考虑在设置图像时将 aTag设置Picturebox为picturename......但这很烦人......
那么如何轻松获取用作backgroundimageat的资源的名称Picturebox?
我想我必须解释一下整个情况:
我有一个带有很多 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");
我希望这会奏效..