我正在使用Visual Studio Professional 2013编写Excel 2010插件.我创建了一个简单的CustomTaskPane,其中包含一个System.Windows.Forms.WebBrowser子文件.该插件工作正常,我可以通过单击并更改复选框的状态在Web浏览器内导航.

当我点击输入文本框时,我得到焦点,我看到光标闪烁,但是当我开始输入时,文本被发送到Excel并写入单元格而不是浏览器中的文本框.
我在功能区加载时添加自定义任务窗格.
private void Ribbon_Load(object sender, RibbonUIEventArgs e)
{
TaskPaneView taskPaneView = new TaskPaneView();
Microsoft.Office.Tools.CustomTaskPane myTaskPane = Globals.ThisAddIn.CustomTaskPanes.Add(taskPaneView, "Title");
myTaskPane.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)
当我点击文本框然后点击F6它正常工作.customtaskpane标题稍微变暗,文本框中会捕获文本.
我如何解决这个问题,以便当我点击输入文本框时,文本进入框而不是Excel?
编辑:好的,我做了一些测试. 如果我在TaskPaneView上添加事件以跟踪鼠标输入并单击它们可以正常工作,但前提是我删除了Web浏览器子项.这意味着Web浏览器以某种方式阻止这些事件并阻止TaskPaneView理解它具有焦点.如果我还在浏览器旁边的TaskPaneView中添加了一个文本框表单控件,文本框工作正常,TaskPaneView理解它有焦点,然后浏览器中的输入文本字段开始工作.如果我直接在Web浏览器上调用焦点方法,则TaskPaneView会理解它具有焦点并且一切正常.很明显,问题不在于键盘问题,而是在点击浏览器时没有告诉它有问题的TaskPaneView问题,因此击键会转到错误的区域.如果我能找到一种方法让TaskPaneView理解它有焦点,那么每个标志都应该有效.
我正在使用VSTO构建办公室插件.在具有不同DPI设置的多个监视器的系统上,我的自定义任务窗格的内容在具有较高DPI设置的监视器上绘制两次:
只有较小的版本实际上响应用户输入.较大的版本似乎只是一个放大的图像.
我尝试过使用各种DPI相关设置,例如:
AutoScaleMode在我的用户控制上.我尝试了所有选项,没有变化.SetProcessDpiAwareness.我尝试了所有选项,没有变化.dpiAware为true和false.没变.新的Web Addins没有这个问题.此外,内部任务窗格没有此问题.
这是一个已知的问题吗?我怎样才能解决这个问题?
我正在开发一个实时语言分析工具,需要使用VSTO加载项(使用C#编写的.NET4.6.1编写,突出显示单词以引起Word 2016中作者的注意).想一想语法/拼写检查,它会在单词下面添加一条波浪线,以显示该单词具有语法错误或拼写错误.我为我自己定义的一些规则添加了一个类似的功能.
我搜索周围添加波浪线,并无意中发现了Font.Underline和Font.UnderlineColor.我把它设置在一个单词的范围内,它似乎提供了我追随的视觉效果.但是有一个问题.我添加或加下划线颜色的每个下划线都会向撤消堆栈添加撤消操作.
我不希望这种情况发生,或者我想要一种方法来弹出我刚才在堆栈代码中执行的操作.目的是让用户能够使用CTRL + Z删除他更改的文本,而不会影响我的语言分析结果.
我该怎么做呢?
我有一个WPF Mvvm-Light应用程序,它使用选项卡控件向用户显示不同的视图.
我遇到的问题是,当程序首次加载时,选项卡控件显示为空.但在本地调试时,这个问题永远不会发生 这个应用程序已经开发了一年多没有这个问题,突然间它开始发生.见下图

如果用户调整其窗口大小,则选项卡控件中的内容将刷新并显示,并且在打开应用程序时问题永远不会再次出现.但是这个问题在第一个程序加载和第一个标签加载(同时发生)的100%时间内发生
这是我如何定义插入到选项卡控件中的视图
<DataTemplate DataType="{x:Type FtcViewModel:DashboardNavViewModel}">
<FtcView:DashboardNav />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
这是我的标签控件:
<TabControl Grid.Column="1" Grid.Row="3"
SelectedItem="{Binding CurrentViewModel}"
ItemsSource="{Binding OpenViewModelCollection}"
Style="{StaticResource TabControlStyle}"
ItemContainerStyle="{StaticResource TabItemStyle}" >
</TabControl>
Run Code Online (Sandbox Code Playgroud)
然后在我的主窗口视图模型中,我将一个集合分配给选项卡控件,默认情况下将dashbaord设置为第一个像这样打开的选项卡(试图只包含相关代码,很明显在viewModel文件中还有更多):
Public Property OpenViewModelCollection As ObservableCollection(Of ViewModelHelper)
Get
Return Me._OpenViewModelCollection
End Get
Set(value As ObservableCollection(Of ViewModelHelper))
If _OpenViewModelCollection Is value Then
Return
End If
_OpenViewModelCollection = value
RaisePropertyChanged(OpenViewModelCollectionPropertyName)
End Set
End Property
Public Property CurrentViewModel As ViewModelHelper
Get
Return Me._CurrentViewModel
End Get
Set(value As ViewModelHelper)
If _CurrentViewModel Is value Then …Run Code Online (Sandbox Code Playgroud) 当光标位于任务窗格之外时,不会引发单击事件窗体上下文菜单项.我不知道它是如何工作的.90%的时间,点击是在任务窗格之外.

打开上下文菜单时,子菜单通常显示在任务窗格之外(参见下图).在这种情况下,不会引发上下文菜单中的单击事件.
我绝对不知道如何做这项工作.
有任何想法吗?
在DateTimePicker用户单击DropDown按钮时,会显示日历。我不想在 DropDown 事件上显示日历。
有什么方法可以覆盖此事件并在用户单击 DropDown 按钮时显示自定义表单?
c# ×4
vsto ×4
excel ×2
winforms ×2
wpf ×2
.net ×1
clickonce ×1
contextmenu ×1
excel-2010 ×1
ms-office ×1
ms-word ×1
mvvm ×1
mvvm-light ×1
powerpoint ×1
vb.net ×1