複数のフォームの間で1つのnotifyIconを使用するにはどうすればよいですか?

私はプロジェクトの私のメインフォームにnotifyIconを追加しました。このプロジェクトではnotifyIconを使用できるようにするための他のフォームもありますが、これは難しいと判明しています。 1つのnotifyIconを複数のフォーム間で使用する最良の方法は何ですか?フォームに追加しないで自分のクラスでインスタンス化するというスレッドを読んだところ、私には意味がありませんでした。思考?

0

3 答え

メインフォームにプロパティを公開するだけで、NotifyIconへの参照が返されます。そこには1つしかないので静的にすることもできます:

public partial class MainForm : Form {
    public MainForm() {
        InitializeComponent();
        notifier = this.notifyIcon1;
        this.FormClosed += delegate { notifier = null; };
    }

    public static NotifyIcon Notifier { get { return notifier; } }

    private static NotifyIcon notifier;
}

他のクラスのコードでも、単にMainForm.Notifierを使用できるようになりました。

4
追加された
MainFormを使用してエラーが発生します。System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
追加された 著者 Fuzz Evans,
私は上記のコードを実装し、フォーム内でnotifyIcon1を使用する必要があります。Form1.Notifier.BalloonTipText = "Balloon text";どうもありがとうございます。
追加された 著者 Fuzz Evans,

NotifyIcon が実装されているフォームにパブリック静的変数を作成します。

public static NotifyIcon m_objNotifyIcon;

フォームのロード割り当てフォームで NotifyIcon

m_objNotifyIcon = this.notifyIcon1;

準備完了。これで、プロジェクトのどこからでも通知アイコンにアクセスできます

Forms.MainScreen.m_objNotifyIcon.ShowBalloonTip(2000, "Title", "Message", ToolTipIcon.Info);
1
追加された

NotFormIcon コントロールに MainForm を割り当てる必要がある場合でも、異なるフォーム間でオブジェクトを共有することについては何の問題もありません。

もっと明確にしようとすると、

1. MainForm starts and initializes NotifyIcon control wrapper class, let's call NotifyControlHolder.

2. That NotifyControlHolder class stands in your UIShared like a public property.

3. UIShared singletone class is accesible from differnt parts of your application, which can access it and change it's state, bypassing the MainForm.

0
追加された
私はまだこの物語Tigranでかなり初心者です。私はあなたが言っていることを理解していると思いますが、私はそれをどのように実装するかを知るのは難しい時です。
追加された 著者 Fuzz Evans,