我试图通过使用委托或使用类实例作为参数来稍微优化我的代码。我对 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;
}
}
}
好的。我想要做的是修改 CreateTaskPane 函数添加一个class
参数(这有意义吗?)所以我可以多次重复使用此函数用于功能区上的不同按钮。我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;
}
我真的希望你能理解我正在努力但我无法做到的事情。我感谢任何尝试提供帮助。谢谢