这里记录的与微软的问题-摄制可供下载: https://connect.microsoft.com/VisualStudio/feedback/details/741454/value-change-event-doesnt-fire-for-datetimepicker-controls-used-在-VSTO-插件
如果你把一个DateTimePicker在Excel中VSTO浮动插件和定位,以便当日历滴下来,它是外接的边缘之外,在这里看到:
选择在任何预期的绿色工程盘旋的日期,但点击红圈内的任何日期的时候,它只是关闭日历下拉,并且不设定日期!
有谁知道我怎么能解决这个问题?
编辑
这个所谓的用户经历了使用WPF的问题: VSTO WPF ContextMenu.MenuItem点击TaskPane外不提高
该问题的答案显示报告问题的同时,连回,但仍与VSTO 4.0 SP1无解: https://connect.microsoft.com/VisualStudio/feedback/details/432998/excel-2007-vsto-custom-任务窗格与- WPF的上下文菜单具有焦点,问题
其中一个解决方法是使用DispatcherFrame泵消息和订阅GotFocusEvent和LostFocusEvent的菜单。 http://blogs.msdn.com/b/vsod/archive/2009/12/16/excel-2007-wpf-events-are-not-fired-for-items-that-overlap-excel-ui-for- WPF的上下文menus.aspx但这是菜单中的所有WPF代码不是为Winform中的DateTimePicker的解决方案。
瑞普微软连接:
新建项目> Excel 2010中添加 - 在使用TaskPane; 使用Microsoft.Office.Core;
命名空间ExcelAddIn2 {公共部分类的ThisAddIn {TaskPaneView MyTaskView = NULL; Microsoft.Office.Tools.CustomTaskPane MyTaskPane = NULL;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
//setup custom taskpane
MyTaskView = new TaskPaneView();
MyTaskView.currentInstance = Globals.ThisAddIn.Application;
MyTaskPane = this.CustomTaskPanes.Add(MyTaskView, "MyTaskView");
MyTaskPane.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
MyTaskPane.DockPositionRestrict = MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange;
MyTaskPane.Visible = true;
}
}
文件菜单>添加>新建项目>类库>命名TaskPane
然后在TaskPane项目创建一个名为TaskPaneView用户控件
public partial class TaskPaneView : UserControl
{
public TaskPaneView()
{
InitializeComponent();
}
public Microsoft.Office.Interop.Excel.Application currentInstance { get; set; }
public TaskPaneCtrl getTaskPaneCtrl
{
get { return this.taskPaneCtrl1; }
}
}
接下来创建一个DateTimePicker用户控件,确保Calendar控件的位置朝向用户控件的右下方
public partial class TaskPaneCtrl : UserControl
{
public TaskPaneCtrl()
{
InitializeComponent();
}
}
在TaskPane类库引用Excel的互操作(例如C:\ Program Files文件X86 \微软的Visual Studio 14.0 \ Visual Studio工具用于Office \ PIA \ OFFICE14 \ Microsoft.Office.Interop.Excel.dll)。
生成解决方案。 评论指出,不工作的部分。 生成解决方案。
现在拖放TaskPaneCtrl到TaskPaneView并取消件事,无法编译。
F5键并单击Calendar控件,现在尽量选择是taskpane区域以外的日期。 没有价值的变化事件触发,它的行为像日历之外的点击!
注:我试过了脱落的控制,但它的活动,请FIRE下降downlist!