从Windows窗体中打开c# word 2013项目
本文关键字:word 2013项目 Windows 窗体 | 更新日期: 2023-09-27 18:02:01
我已经成功构建了一个c# Word 2013项目(ReportGenerator),该项目打开了MS ACCESS数据库并生成了MS Word 2013报告。结果非常好。我的问题是,目前它只能从Visual Studio内部运行。我的老板希望它通过windows窗体运行。
我有能力建立一个新的项目(ReportRunner),其中包含一个窗体与数据网格,填充它,并把一个按钮在它。我缺少的是知道如何做的能力。
- 从ReportGenerator中打开报告生成代码ReportRunner的onclick事件
- 从reporttrunner传递一个变量到ReportGenerator,以避免硬编码。
我希望能够写一行像"ReportGenerator.ThisDocument。"在按钮的单击事件中调用ThisDocument_Startup "。这是不可能的。
在我的项目中重要的代码位是:
ReportGenerator
namespace ReportGenerator
{
public partial class ThisDocument
{
ReportData reportData = new ReportData();
public void ThisDocument_Startup(object sender, System.EventArgs e)
{
int idToLookFor = 2;
reportData = MyFunctionToReadAccessData(idToLookFor);
MyFunctionToPutDataIntoReport();
}
}
}
ReportRunner
using ReportGenerator;
namespace ReportRunner
{
public partial class Form1 : Form
private void button1_Click(object sender, EventArgs e)
{
int idToLookFor = int.Parse(dataGridView1.CurrentRow.Cells[0].Value.ToString());
//HOW DO I MAKE IT OPEN REPORT GENERATOR ThisDocument_Startup
// AND PASS IT THE idToLookFor
}
}
更新:
我很难理解你的评论,所以这里有一些更新:
-
您可以使用我提供的链接从单独的c# WinForm调用文档级插件的方法。不管是应用程序级的插件还是文档级的插件,方法都是一样的。
-
为什么要构建一个与ReportGenerator插件项目分开的reporttrunner Form项目?正如我在下面所说的,你可以用两个项目创建一个VS解决方案——一个是文档级的插件,另一个是WinForm,你可以简单地从与插件相关的Ribbon中调用WinForm。
我想你是在问如何从一个Word插件从一个Winform调用一个函数?我最近在这里解释了如何做到这一点:如何从单独的c#项目中调用VSTO AddIn方法?
话虽如此,我不建议这样做,因为你可以简单地将你的WinForm与插件打包在一起,然后像这样使用Ribbon打开它:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Form1 aForm = new Form1();
aForm.Show();