クラスに渡す必要があるフォームへの参照Main
が必要になります(おそらくコンストラクターで):
public class MyClass
{
private Form Main { get; set; }
public MyClass(Form main, ...)
{
Main = main;
}
}
次に、クラスからアイテムを呼び出します。
private method DoSomething(...)
{
Main.TaskbarIcon.ShowBalloonTip(...);
}
ただし、おっしゃったように、クラスと実際のオブジェクトの間に何かを配置することをお勧めします。
編集: デリゲートを呼び出して変更を行うか、アイテムへの参照を渡すこともできます (これもお勧めしません)。ただし、これをすべて同じスレッドで実行していることを確認してください。
Edit2: リンクを構築すると、インターフェイスは次のようになります。
interface IYourForm
{
void ShowBalloonTip(int timeout, string tipTitle, string tipText, ToolTipIcon tipIcon);
}
次に、フォームはインターフェースを実装します。
class YourForm : Form, IYourForm
そして方法:
public void ShowBalloonTip(int timeout, string tipTitle, string tipText, ToolTipIcon tipIcon)
{
TaskbarIcon.ShowBalloonTip(timeout, tipTitle, tipText, tipIcon);
}
これにより、DoSomething メソッドが次のように変更されます。
private method DoSomething(int timeout, string tipTitle, string tipText, ToolTipIcon tipIcon)
{
Main.ShowBalloonTip(timeout, tipTitle, tipText, tipIcon);
}
繰り返しますが、これがすべて同じスレッド上にあることを確認してください。それ以外の場合は、別の方法で処理する必要があります。