用Controls.AddTextbox(或者其他Add)在excel里新增一個輸入框控制元件,用完移除的時候用control.remove可以正常移除,但是當前作業表的功能區會變灰,復制粘貼也被禁用,不過單元格還能編輯。在切換作業表或者保存后可以恢復正常,不知道是我什么地方不對還是因為這是一個bug
uj5u.com熱心網友回復:
>>>我用的是這個方法:Globals.Sheet1.Controls.AddTextBoxAddTextBox(this ControlCollection controls, double left, double top, double width, double height, string name);移除時:Globals.Sheet1.Controls.Remove(string name)<<<
根據您的描述和示例代碼,我創建了一個示例程式并嘗試使用您提供的示例代碼,但是Controls并不提供AddTextBox的方法,所以我建議重新確認下您提供的示例代碼沒有錯誤,或者您可以參考如下代碼:
private void btnAdd_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Tools.Excel.Controls.TextBox textBox =
new Microsoft.Office.Tools.Excel.Controls.TextBox();
Globals.Sheet1.Controls.AddControl(textBox,Globals.ThisWorkbook.Application.Selection, "MineTextBox");
}
private void btnRemove_Click(object sender, RibbonControlEventArgs e)
{
Globals.Sheet1.Controls.Remove("MineTextBox");
}
更多詳細資訊,請點擊這里以參考關于在運行時在 VSTO 外接程式專案中向作業表中添加控制元件
uj5u.com熱心網友回復:
>>>我用的是這個方法:Globals.Sheet1.Controls.AddTextBoxAddTextBox(this ControlCollection controls, double left, double top, double width, double height, string name);移除時:Globals.Sheet1.Controls.Remove(string name)<<<
根據您的描述和示例代碼,我創建了一個示例程式并嘗試使用您提供的示例代碼,但是Controls并不提供AddTextBox的方法,所以我建議重新確認下您提供的示例代碼沒有錯誤,或者您可以參考如下代碼:
private void btnAdd_Click(object sender, RibbonControlEventArgs e)
{
Microsoft.Office.Tools.Excel.Controls.TextBox textBox =
new Microsoft.Office.Tools.Excel.Controls.TextBox();
Globals.Sheet1.Controls.AddControl(textBox,Globals.ThisWorkbook.Application.Selection, "MineTextBox");
}
private void btnRemove_Click(object sender, RibbonControlEventArgs e)
{
Globals.Sheet1.Controls.Remove("MineTextBox");
}
更多詳細資訊,請點擊這里以參考關于在運行時在 VSTO 外接程式專案中向作業表中添加控制元件
uj5u.com熱心網友回復:
這個函式也用過,效果是一樣的。剛試了試,發現如果btnRemove按鈕是直接浮在作業表里,移除后沒有問題。
如果我用輸入框失去焦點事件來移除或者把移除按鈕放到功能區,結果有問題了。(補充一下:專案是excel2010檔案)
Microsoft.Office.Tools.Excel.Controls.TextBox textBox = new Microsoft.Office.Tools.Excel.Controls.TextBox();
Globals.Sheet1.Controls.AddControl(textBox, Globals.ThisWorkbook.Application.Selection, "MineTextBox");
textBox.LostFocus += new EventHandler(removetextbox);
private void removetextbox(object sender, EventArgs e)
{
Globals.Sheet1.Controls.Remove("MineTextBox");
}
uj5u.com熱心網友回復:
請問問題解決了嗎轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/107780.html
標籤:其他技術討論專區
上一篇:opentsdb啟動報錯
下一篇:這場疫情,改變了你的什么?
