4

ToolStrip を含む Form があります。この ToolStrip には ToolStripButton が含まれています。このボタンに画像を割り当てたい:

this.btnSaveFile.Image = Bitmap.FromFile("C:\\Work\\Icons\\png\\save.png");

指定したパスに save.png がある場合にのみ機能します。そうしないと、FileNotFound 例外が発生します。

フォーム デザイナーでフォームを作成すると、Visual Studio は次のようなコードを作成します。

this.toolStripButton9.Image = ((System.Drawing.Image) (resources.GetObject("toolStripButton9.Image")));

toolStripButton9.Image は本名ではありません。Visual Studio はファイル save.png を取得し、それを toolStripButton9.Image に変換します。

しかし、Designer を使用せずにプログラムでフォームを作成します。私の質問は、プログラムで ToolStripBotton にイメージを割り当てる方法ですか?

プロジェクトに画像を追加しようとしましたが、あまり役に立ちませんでした。指定した場所にこのファイルが必要ないように、Visual Studioでそれを取得して実行可能ファイルに埋め込む方法がわかりません。

MSDN では、次のようなソリューションしか表示されませ

this.toolStripButton1.Image = Bitmap.FromFile("c:\\NewItem.bmp");

しかし、上で述べたように機能しません。簡単な解決策があることは理解していますが、わかりません。ヒントを教えてください。

4

2 に答える 2

5

Visual Studio で、ソリューション エクスプローラーで "Properties" フォルダーを開き、Resources.resx ファイルを開き、既存の画像ファイルをリソースとして追加します。その後、 Resource 静的クラスを介してプログラムで使用できます。

Image x = Resources.MyResourceImage;

私が提案するコードの完全な例:

using System.Windows.Forms;
using Testapplication.Properties;

namespace Testapplication {
    public class Class1 {
        public Class1() {
            Form MyForm = new Form();
            ToolStrip MyToolStrip = new ToolStrip();
            MyForm.Controls.Add(MyToolStrip);

            ToolStripButton MyButton = new ToolStripButton();
            MyToolStrip.Items.Add(MyButton);

            MyButton.Image = Resources.MyResourceImage;

            MyForm.Show();
        }
    }
}

YourApps の Properties 名前空間に using を追加することを忘れないでください。Resources.resx (.cs) ファイルはその名前空間に存在し、画像などの厳密な型のオブジェクト参照を提供するために使用されます。あなたの場合、「MyResourceImage」を「保存」に置き換えます(引用符を省略してください)。

ps。Resources.designer.cs ファイルの最も重要な部分を見てみましょう。

internal static System.Drawing.Bitmap MyResourceImage {
    get {
        object obj = ResourceManager.GetObject("MyResourceImage", resourceCulture);
        return ((System.Drawing.Bitmap)(obj));
    }
}
于 2009-11-26T08:44:00.623 に答える
0

つまり、埋め込まれたリソースから画像を設定するということですか?

string res = "MyAssembly.Resources.toolStripButton9.Image";
Stream s = this.GetType().Assembly.GetManifestResourceStream( res );
Icon icon = Icon.FromStream( s );

うまくいく場合はWebleeuwsの回答を使用してください。これよりもはるかに簡単です:P

于 2009-11-26T08:48:29.867 に答える