manipular manejo how desde create con wpf excel interop

manejo - WPF ComboBox no permanece abierto cuando se usa en un Panel de tareas



manejo de excel en c# (2)

Add-in Express examinó esto por mí, y resulta que tiene algo que ver con el estilo Ventana del Panel de tareas que se agrega a Excel. Si apaga el indicador WS_CHILD en Windows CreateParams, los cuadros combinados y otras ventanas emergentes funcionan como se esperaba.

Me dieron este fragmento de código para agregar a mi ADXExcelTaskPane:

private const uint WS_CHILD = 0x40000000; private const uint WS_CLIPCHILDREN = 0x02000000; private const uint WS_CLIPSIBLINGS = 0x04000000; private CreateParams _CreateParams = new CreateParams(); protected override CreateParams CreateParams { get { _CreateParams = base.CreateParams; if (!DesignMode) _CreateParams.Style = (int)(WS_CLIPCHILDREN | WS_CLIPSIBLINGS); //| WS_CHILD return _CreateParams; } }

Tengo un extraño error con WPF Interop y un complemento de Excel. Estoy usando .Net 3.5 SP1.

Estoy usando Add-in Express para crear un Panel de tareas personalizado para Excel 2003. Dentro de ese panel de tareas estoy usando ElementHost para alojar un UserControl de WPF. El UserControl simplemente contiene una Cuadrícula con un TextBox y un ComboBox. Mi problema es que aunque todo se muestra correctamente, el ComboBox no permanecerá desplegado a menos que mantenga presionado el mouse sobre la flecha hacia abajo.

No creo que esto esté necesariamente relacionado con Add-in Express porque he tenido un problema similar cuando intenté mostrar una ventana de WPF sin moderadamente en Excel.

Un segundo problema es que el ComboBox parece reacio a abandonar el enfoque. Si hago clic en él, el área de texto se vuelve gris para indicar que tiene foco, pero no puedo mover el foco a ningún otro lugar en la ventana. La única forma de arrebatar el foco es mover la rueda del mouse.

¿Alguien más tuvo un problema similar y logró arreglarlo?


Yo tuve el mismo problema. Tengo un control de usuario de WPF alojado en un control de usuario de WinForm y el conjunto es un complemento de Excel. Trabajo con Visual Studio 2010 y Excel 2007 y Excel 2010.

Mi problema fue que cuando hice clic una vez en la hoja de Excel, el AddIn nunca gana foco otra vez. Encontré una solución.

  1. En el constructor de mi control de usuario de WinForm, me registro en el evento MouseEnter de mi control de usuario de WPF.
  2. En el controlador de eventos MouseEnter, me doy el foco a mí mismo (this.Focus ())

    public WpfContainerUserControl() { InitializeComponent(); GpecsBrowserTabUserControl gpecBrowser = elementHost1.Child as GpecsBrowserTabUserControl; gpecBrowser.MouseEnter += new System.Windows.Input.MouseEventHandler(gpecBrowser_MouseEnter); } void gpecBrowser_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { this.Focus(); }