デリゲートを使用するか、クラス インスタンスをパラメーターとして使用して、コードを少し最適化しようとしています。私はC#にかなり慣れていませんが、そもそも正しい軌道に乗っていると仮定すると、どちらがより良いアプローチなのかまだわかりません。しかし、私の問題は、クラスインスタンスをパラメーターとして送信することに関連しています。説明させてください。私はこのロジックに従おうとしていますが、失敗しています....
いくつかのボタンでVSTOリボンを作成しました。次のよう
になります。ボタンに機能を追加しようとしているので、各ボタンをクリックすると新しい TaskPane が開きます。
Calendar
メモにあるリボンボタン用にこのコードを書きましたGSMRibbon.cs
。経験豊富なプログラマーにとって、このコードは非常に理解しやすいと思いますが、何か理解できない場合は、コメントでお知らせください)。
namespace GSM
{
public partial class GSMRibbon
{
private void GSMRibbon_Load(object sender, RibbonUIEventArgs
{
}
private CustomTaskPane taskPane;
private CustomTaskPane TaskPane
{
get
{
return this.taskPane;
}
}
private void vendors_calendar_Click(object sender, RibbonControlEventArgs e)
{
string newTitle = "PO Calendar";
if (TaskPane != null)
{
if (TaskPane.Title != newTitle)
{
Globals.ThisAddIn.CustomTaskPanes.Remove(TaskPane);
CreateTaskPane(newTitle);
}
else
{
taskPane.Visible = true;
}
}
else
{
CreateTaskPane(newTitle);
}
}
private void CreateTaskPane(string title)
{
var taskPaneView = new CalendarView();
taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, title);
taskPane.Visible = true;
}
}
}
Ok。私がやりたかったのは、class
パラメーターを追加して CreateTaskPane 関数を変更することでした (これは意味がありますか?)。これにより、リボンのさまざまなボタンに対してこの関数を複数回再利用できます。View
ボタンごとに個別に を作成しましたが、 を渡す方法がわかりませんView
。
だから、私はこのようなものの後:(CalendarViewはビューの名前です)
CreateTaskPane(new CalendarView(), newTitle);
そして次のような関数:
private void CreateTaskPane(object typeOfView, string title)
{
var taskPaneView = new (typeOfView)Object;
taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, title);
taskPane.Visible = true;
}
私が何をしようとしているのか、自分ではできないことを理解していただければ幸いです。助けていただければ幸いです。ありがとう