C sharp - Manejo de User Controls y Custom Task Pane en C#

   
Vista:

Manejo de User Controls y Custom Task Pane en C#

Publicado por Karem (3 intervenciones) el 17/08/2015 20:33:29
Buenas tardes! escribo este tema para solicitar ayuda con el manejo de los paneles de tareas, o Custom Task Pane, en un complemento (add in) de Word 2010. Me encuentro programando mi complemento de Word con C# en Visual Studio 2010 y me encuentro con un enorme problema al momento de desplazarme de un panel de tareas a otro. La situación es la siguiente:

1) Tengo un primer panel que me permite escoger un archivo por medio de un Open File Dialog. Luego le doy a un botón ABRIR y esto me abre un nuevo documento Word con el archivo que seleccioné previamente. Cuando este nuevo archivo se abre, muestro otro Custom Task Pane que me muestra otra serie de opciones. Hasta ahí, todo bien.

El problema empieza cuando quiero escoger OTRO documento desde mi panel anterior. Intenté programar un botón que me permitiera mostrar el otro panel y sí lo hace, pero el "actual" no se elimina, y no encuentro la instrucción adecuada. Intenté con This.Hide(), pero solo me inhabilitaba para seleccionar opciones en el panel.

Mi código viene dado de esta manera:

Tengo Mi clase Add in donde invoco al primer panel en un documento Word nuevo:

public partial class ThisAddIn
{
private ctrAbrirECU AsistenteParaAbrirECU;
private Microsoft.Office.Tools.CustomTaskPane PanelDeAsignaciones;


private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
AsistenteParaAbrirECU = new ctrAbrirECU();

PanelDeAsignaciones = this.CustomTaskPanes.Add(AsistenteParaAbrirECU, "Bienvenido al Asistente");
PanelDeAsignaciones.Visible = true;
PanelDeAsignaciones.Width = 450;
}


Tengo un user control llamado ctrAbrirECU donde abro el documento y llamo al otro panel:

public partial class ctrAbrirECU : UserControl {
public ctrAbrirECU() {
InitializeComponent();
}
//Abro el archivo Word que seleccioné:
private void btnAbrirECU_Click(object sender, EventArgs e) {

if (txtNombreDelECU.Text == "") {
MessageBox.Show("¡No ha seleccionado un ECU!");
} else {

string vRutaCompleta = (txtNombreDelECU.Text);
Globals.ThisAddIn.Application.Documents.Open(vRutaCompleta);
Word.Document NuevoECU = Globals.ThisAddIn.Application.ActiveDocument;

ctrEscribirPPdesdeECUUsandoTreeview AsistenteParaEscribirNuevoPlanDePrueba;
Microsoft.Office.Tools.CustomTaskPane PanelDeElementosDelECU;
AsistenteParaEscribirNuevoPlanDePrueba = new ctrEscribirPPdesdeECUUsandoTreeview();
PanelDeElementosDelECU = Globals.ThisAddIn.CustomTaskPanes.Add (AsistenteParaEscribirNuevoPlanDePrueba, "Se ha leído el ECU y sus elementos");
PanelDeElementosDelECU.Visible = true;
PanelDeElementosDelECU.Width = 500;
}
}
//Escojo el archivo Word que necesito:
private void btnRutaDelArchivo_Click(object sender, EventArgs e) {

if (ofdVentanaDeArchivos.ShowDialog() == DialogResult.OK) {
txtNombreDelECU.Text = ofdVentanaDeArchivos.FileName;
}
}
}

Finalmente, tengo un ctrEscribirPP que es donde ubico elementos del documento que abrí. En ese control no menciono nunca los paneles, excepto en el botón que instalé para "regresar", que es así:

private void pcbFlechaVolvereEscogerOtroECU_Click(object sender, EventArgs e) {

ctrAbrirECU ctrAbrirECUDiferente = new ctrAbrirECU();
Microsoft.Office.Tools.CustomTaskPane PanelDeAsignaciones;
ctrAbrirECUDiferente.Visible = true;
PanelDeAsignaciones = Globals.ThisAddIn.CustomTaskPanes.Add(ctrAbrirECUDiferente, "Bienvenido al Asistente");
PanelDeAsignaciones.Visible = true;
PanelDeAsignaciones.Width = 450;
//Esto lo intenté pero no funcionó:
This.Hide(); //No tenía la opción Close() y no sé si debo invocar un evento para eso.
}

Esto, como dije, me abre de nuevo el otro user control y mantiene su funcionalidad, pero no logro que se cierre el otro user control (ctrEscribirPP).
Si alguno pudiera echarme una mano con este problema, se lo agradecería muchísimo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder