2009-08-29 8 views
4

NotifyIconを持つフォーム(Form1)があります。 NotifyIconのアイコンを変更したい別のフォーム(Form2)があります。私はこのコードを使用するたびに、私の代わりに現在のアイコンを変更するので、システムトレイに表示余分なアイコンを取得:NotifyIconを別のフォームに変更する

をForm1(ICOがNotifyIconの名前です):

public string DisplayIcon 
{ 
    set { ico.Icon = new Icon(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("Alerts.Icons." + value)); } 
} 

のForm2:私は疑う

Form1 form1 = new Form1(); 
form1.DisplayIcon = "on.ico"; 

はForm2の上のForm1の新しいインスタンスを作成するとは何かを持っているが、私はこれを行うことなく、「DisplayIcon」にアクセスするかどうかはわかりません。ありがとう。

UDPATEは:

public Form Form1 
{ 
    set {value;} 
} 
+0

私は私のサンプルにForm1のプロパティのコードを追加しました。 – olle

答えて

1

私は一点でのForm2を作成し、Form1を前提としています。私はそれが何かのようになり、フォーム2上のカスタムプロパティを書き込むことに少し混乱しています。この時点で、form1の参照をform2に渡すことができるので、form2はform1のDisplayIconプロパティにアクセスできます。

だから、

//Somewhere in the code of form1 
public void btnShowFormTwoClick(object sender, EventArgs e) 
{ 
    Form2 form2 = new Form2(); 
    form2.Form1 = this; //if this isn't done within form1 code you wouldn't use this but the form1 instance variable 
    form2.Show(); 
} 

//somewhere in the code of form2 
public Form1 Form1 { get;set;} //To create the property where the form1 reference is storred. 
this.Form1.DisplayIcon = "on.ico"; 
+0

私ができるよりも速くソリューションを手に入れました。 –

1

あなたの疑いで、あなたが重複しNotifyIconになりForm1の2番目のインスタンスを正しく作成されているようなもので終わるでしょう。

正しいインスタンスのDisplayIconプロパティを設定するには、Form2のForm1への参照が必要です。

可能な解決策は、Form2を作成するときにForm1からForm2への参照を渡すことです(Form1からForm2を作成すると仮定します)。例えば

:Form2をオン

Form2 form2 = new Form2(); 
form2.Form1 = this; // Form1 is custom property on Form2 that you need to add 
form2.Show(); 

カスタムプロパティとして定義されます:

//Note the type is Form1, in order to get to your public DisplayIcon property. 
public Form1 Form1 { get;set;} 
+0

偉大な心は似て考える;) – olle

+0

、それはようなものになるだろう、私は、フォーム2のカスタムプロパティを書き込むことに少し混乱している: 公共フォームForm1の { セット{値;} }カスタムプロパティは次のようになり –

+0

次のようにForm2で定義されます。 public Form1 Form1 {get; set;} –

関連する問題