Я управляю надстройкой Excel в C #, используя VS2017.
Надстройка использует веб-браузер, который используется для доступа к определенным веб-страницам.
Недавно он перестал работать на каждой версии надстройки, которую я имею (dev и release), хотя я не видел заметок об этом патче.
По сути, элемент управления WebBrowser больше не отображается. Все его свойства установлены правильно, HTML-документ корректно загружается при навигации, но вместо элемента управления ничего не отображается. Элемент управления и его родительский компонент установлены на видимое значение и правильно загружены с правильным размером и координатами.
Я установил новый пустой проект в Visual Studio и протестировал его только с помощью элемента управления WebBrowser, пытающегося отобразить Google и about: blank, но безуспешно.
Вот код ниже:
ThisAddin.cs :
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
return new MyRibbon();
}
#region VSTO generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
MyRibbon.cs :
[ComVisible(true)]
public class MyRibbon : Office.IRibbonExtensibility
{
private Office.IRibbonUI ribbon;
public MyRibbon()
{
}
#region IRibbonExtensibility Members
public string GetCustomUI(string ribbonID)
{
return GetResourceText("WebBrowserShowcase.MyRibbon.xml");
}
#endregion
#region Ribbon Callbacks
//Create callback methods here. For more information about adding callback methods, visit https://go.microsoft.com/fwlink/?LinkID=271226
public void Ribbon_Load(Office.IRibbonUI ribbonUI)
{
this.ribbon = ribbonUI;
}
public void openWebBrowser_click(IRibbonControl control)
{
WebPanel panel = new WebPanel();
panel.ShowWebBrowser();
}
public string getTabLabel(IRibbonControl control) { return "WebBrowserShowCase"; }
#endregion
}
MyRibbon.xml :
<?xml version="1.0" encoding="UTF-8"?>
<customUI onLoad="Ribbon_Load" xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon>
<tabs>
<tab id="myRibbon" getLabel="getTabLabel">
<group id="MyGroup" label="My Group">
<button id="OpenWebBrowser" size="large" onAction="openWebBrowser_click" imageMso="_3DDirectionGalleryClassic"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
WebPanel.cs :
public class WebPanel : UserControl
{
TableLayoutPanel tableLayoutPanel1;
WebBrowser _webBrowser;
public WebPanel()
{
InitializeComponent();
WebBrowserHelper.FixBrowserVersion();
}
public void ShowWebBrowser()
{
CustomTaskPane taskPane = Globals.ThisAddIn.CustomTaskPanes.Add(this, "title", Globals.ThisAddIn.Application.ActiveWindow);
DisplayTaskPane(taskPane);
Navigate();
}
private void DisplayTaskPane(CustomTaskPane taskPane)
{
taskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
taskPane.Width = Convert.ToInt32(Globals.ThisAddIn.Application.ActiveWindow.Width);
taskPane.DockPositionRestrict = Microsoft.Office.Core.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoHorizontal;
taskPane.Visible = true;
tableLayoutPanel1.Dock = DockStyle.Fill;
tableLayoutPanel1.Visible = true;
_webBrowser.Dock = DockStyle.Fill;
_webBrowser.Visible = true;
}
private void Navigate()
{
_webBrowser.Navigate(new Uri("about:blank"));
}
}
Для удобства я удалил часть автоматически сгенерированного кода и WebBrowserHelper, который вы найдете здесь: WebBrowserHelper
Вот изображение WebPanel, это WebBrowser в компоненте TableLayout:
И вот результат при запуске проекта, переходе на ленту и нажатии кнопки:
Как видите, веб-браузер не отображается. Я пробовал с Uri и без, о: blank и google, но результат всегда один и тот же.
Кто-нибудь имеет представление о том, что может быть проблема здесь?
РЕДАКТИРОВАТЬ :
Очевидно, что веб-браузер все еще работает в Windows 7, но не в Windows 10.
Я проверил это на нескольких машинах, которые имеют одинаковую версию Internet Explorer (11.0.17134.829).
Если проблема в ОС, могу ли я что-нибудь сделать?