0

があります。ユーザーはリソース ファイルからPicturebox選択できます。backgroundimage

resourcename後で、からを取得したいと思いpictureboxます。

私はすでにこれを試しました:

MessageBox.Show(((PictureBox)sender).BackgroundImage.ToString());

しかし、それは私に写真のフォーマットを与えました..次のようなものはありません:

MessageBox.Show(((PictureBox)sender).BackgroundImage.Name.ToString());

Image を設定するときに aTagを theに設定することについてはすでに考えていました...しかし、これは地獄のように面倒です...Pictureboxpicturename

backgroundimageでは、リソースとして使用されるリソースの名前を簡単に取得するにはどうすればよいPictureboxでしょうか。

全体の状況を説明する必要があると思います:たくさんの RAID ボタン

を含むフォームを持っています...
これらのボタンの 1 つを選択してパネルをクリックすると、パネル
は選択された radiobuttonimage に変わります...

パネルのクリックイベント:

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];


resourcemanager を悪用します:

var resman = new System.Resources.ResourceManager(
    "RootNamespace.Pictures",
    System.Reflection.Assembly.GetExecutingAssembly()
)
var image = resman.GetPicture("checkedRadioButton.Text");

これがうまくいくことを願っています..

4

1 に答える 1

1

選択したラジオ ボタンに基づいてリソースを返すメソッドを作成します。

例:

private resource checkResource()
{
    if(radiobuttonApple.checked)
    {
        return resource.apple;
    }

    if(radiobuttonPear.checked)
    {
        return resource.Pear;
    }
}

次に、次のように使用できます。

PanelClick(object obj ,...)
{
    obj.backgroundimage = checkResource();
}

また

PanelClick(object obj ,...)
{
   obj.backgroundimage = checkResource();
   obj.tag = selectedradiobutton.Name
}

編集:

あなたが言ったように、このアプローチには、各割り当ての反復回数に基づいてさまざまな問題が発生する可能性があります。これを回避し、別の解決策に照らして、単一のイベントを使用して、次のようにすべてのラジオ ボタンの状態の変更を処理できます。

最初に、radioButton のステータスが変化するたびに割り当てられるリソース変数を作成します。すなわち。

 private Resource bgResource;

 private void radioButton_CheckedChanged(object sender, EventArgs e)
 {
      RadioButton obj = sender as RadioButton;
      bgResource = resman.GetPicture(obj.Tag);
 }

背景を変更したいときはいつでも、次のように言うだけです。

obj.BackgroundImage = bgResource;
于 2012-09-13T10:06:06.680 に答える