通过 VSTO 文档自定义(即附加了 .Net 代码的工作簿),您可以在运行时向项目的工作表添加和删除控件。下面的代码说明了这个想法:
public partial class Sheet1
{
private void Sheet1_Startup(object sender, System.EventArgs e)
{
var button = this.Controls.AddButton(10, 10, 50, 50, "My Button");
button.Text = "My Button";
button.Click += new EventHandler(button_Click);
}
void button_Click(object sender, EventArgs e)
{
MessageBox.Show("I was clicked!");
}
您还可以通过 VSTO 加载项使用代码将控件动态添加到文档中(感谢VSTO论坛 https://social.msdn.microsoft.com/Forums/en-US/9fcadefb-49e2-4f05-8b73-8aabce8dc40d/can-i-add-controls-dynamically-to-a-worksheet-via-a-vsto-addin?forum=vsto对于那个):
var workSheet = (Excel.Worksheet) sheet;
var vstoSheet = workSheet.GetVstoObject();
var button = vstoSheet.Controls.AddButton(50, 50, 100, 50, "Test");
button.Text = "Dynamic Button!";
Check 埃里克·卡特的这篇文章 https://learn.microsoft.com/en-us/archive/blogs/eric_carter/using-vsto-document-features-in-application-level-add-ins了解更多信息。