此演練將示範如何從 Microsoft Office Excel 文件層級自訂項中開啟 Windows 表單,收集來自使用者的資訊並將這些資訊寫入工作表儲存格。
第一步是要建立一個 Excel 活頁簿項目。
建立新項目
將一個指定範圍添加到 Sheet1 中
選擇 Sheet1 中的儲存格“A1”。
在“名稱”框中鍵入“formInput”。
“名稱框”位於編輯欄左側,就在工作表的“A”列的上方。
按 Enter。
NamedRange 控制項被添加到儲存格“A1”中。 選中儲存格“A1”後,工作表中沒有明顯的指示,但“formInput”會顯示在“名稱”框(正好在左側工作表的上面)和“屬性”視窗中。NameRange控制項,其實就是給一個儲存格起一個名字,當我們修改了儲存格預設的名稱,系統就會自動添加一個名為“NameRange”的控制項到儲存格,在自訂的Windows表單中,我們可以使用Globals.Sheet1.formInput(Globls.活頁簿名稱.自訂的儲存格名稱)來使用這個NameRange控制項,並可以使用NameRange的方法屬性等,例如後面例子中的“Globals.Sheet1.formInput.value2”
將 Windows 表單添加到項目中
建立一個提示使用者輸入資訊的 Windows 表單。
添加 Windows 表單
在“方案總管”中選擇“WinFormInput”項目。
在“項目”菜單上,單擊“添加 Windows 表單”。
將表單命名為 GetInputString.cs,然後單擊“添加”。 新表單在設計器中隨即開啟。
將一個 TextBox 和 Button 添加到表單中。
選擇該按鈕,在“屬性”視窗中找到“Text”屬性,將文本更改為“確定”。
接下來,在 ThisWorkbook.cs 中添加用於收集使用者資訊的代碼。
建立並顯示 GetInputString Windows 表單的一個執行個體,然後將使用者的資訊寫入到工作表的某個儲存格中。
顯示表單並收集資訊
在“方案總管”中右擊“ThisWorkbook.cs”,然後單擊“查看代碼”。ThisWorkbook,好像是應用程式的系統層級管理類
在 ThisWorkbook 的 Open 事件處理常式中,添加下列代碼以聲明 GetInputString 表單的一個變數,然後顯示該表單。
注意
在 C# 中,必須添加一個事件處理常式,如下面的 Startup 事件中所示。
private void ThisWorkbook_Startup(object sender, System.EventArgs e){ this.Open += new Microsoft.Office.Interop.Excel.WorkbookEvents_OpenEventHandler(ThisWorkbook_Open);}
註冊一個事件,在Excel文檔開啟的時候就會自動運行。private void ThisWorkbook_Open(){ GetInputString inputForm = new GetInputString(); inputForm.Show();}
建立一個名為 WriteStringToCell 的方法,此方法用於將文本寫到一個指定的範圍內。 將從表單中調用此方法,並且使用者的輸入將傳遞到儲存格“A1”上的 NamedRange 控制項 formInput。
public void WriteStringToCell(string formData){ Globals.Sheet1.formInput.Value2 = formData;}
Globls.活頁簿名稱.自訂的儲存格名稱.NameRange控制項屬性
接下來,向表單中添加用於處理按鈕的單擊事件的代碼。
將資訊發送到工作表
在“方案總管”中右擊“GetInputString”,然後單擊“視圖設計器”。
雙擊該按鈕以開啟代碼檔案,按鈕的 Click 事件處理常式也隨之添加。
向事件處理常式添加代碼以從文字框中提取輸入內容,將其發送到函數 WriteStringToCell,然後關閉表單。
Globals.ThisWorkbook.WriteStringToCell(this.textBox1.Text);this.Dispose();
測試活頁簿
按 F5 運行項目。
確認 Windows 表單顯示。
在文字框中鍵入“Hello World”,然後單擊“確定”。
確認“Hello World”顯示在工作表的儲存格“A1”中。