guardado El problema con Microsoft aquí - la Repro está disponible para su descarga: https://connect.microsoft.com/VisualStudio/feedback/details/741454/value-change-event-doesnt-fire-for-datetimepicker-controls-used-in-vsto-add-insERROR: canto elige fechas en un DatePicker que caen fuera de un flotante VSTO Add-In
Si se pone un DateTimePicker en un VSTO Excel flotante Añadir -En y la posición, así que cuando el calendario se despliega, se encuentra fuera del borde del complemento, ver aquí:
la elección de cualquiera de las fechas en círculos en los trabajos verdes como se esperaba, pero cuando Al hacer clic en cualquier fecha marcada con un círculo en rojo, simplemente cierra el menú desplegable del calendario y no establece la fecha.
¿Alguien sabe cómo puedo solucionar esto?
EDITAR
Este usuario también lo ha experimentado el problema usando WPF: VSTO WPF ContextMenu.MenuItem Click outside a TaskPane not raised
La respuesta a esta pregunta muestra se comunicó el problema de conectar un tiempo atrás, pero todavía no hay solución con VSTO 4.0 SP1: https://connect.microsoft.com/VisualStudio/feedback/details/432998/excel-2007-vsto-custom-task-pane-with-wpf-context-menu-has-focus-problems
Una de las soluciones consiste en utilizar el DispatcherFrame para bombear mensajes y suscribirse a GotFocusEvent y LostFocusEvent para el menú. 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-context-menus.aspx pero esto es todo el código WPF para el menú no es una solución para Winform DateTimePicker.
Repro de Microsoft Connect:
Nuevo proyecto> Excel 2010 Add-In
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;
}
menú Archivo> Agregar> Nuevo proyecto> Biblioteca de clases> llamado TaskPane
Luego, en el Proyecto TaskPane crear un control de usuario llamado 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; }
}
}
A continuación, cree un control de usuario con un DateTimePicker, asegúrese de que el control de calendario se encuentra hacia la parte inferior derecha del control de usuario
public partial class TaskPaneCtrl : UserControl
{
public TaskPaneCtrl()
{
InitializeComponent();
}
}
F5 y haga clic en el control de calendario, ahora tratar de seleccionar una fecha que está fuera del área del área de trabajo. Sin eventos de cambio de valor, se comporta como un clic fuera del calendario.
Nota: Probé una lista desplegable que se cae fuera del control pero sus eventos ¡HACEN FUEGO!
+1 Brilliant! Lee como SOX (KB visual?), Si funciona cuando lo pruebo el lunes, no hay palabras que puedan expresar mi gratitud. –
nivel de increíble excedido. un buen Hans –