Paso 5: Estructuras de datos y métodos de la ranura
Este paso creará la estructura de datos necesaria para almacenar los datos en el
ranuras extras. Pero en primer lugar, abra el archivo MyControl.xaml.cs y retirar la button1_Click() del método creado por el Asistente para mostrar un cuadro de mensaje cuando el botón original estaba ahí. Puesto que hemos eliminado el botón del archivo XAML nos podemos borrar ese método. Después de borrar el método button1_Click() la clase MyControl debe estar casi vacío y este aspecto:
parcial clase MyControl: UserControl
{
MyControl() pública
{
InitializeComponent();
}
}
Let´s crear algunos campos privados de esta clase almacenar los datos. En primer lugar, creamos dos constantes que almacenan el número máximo de ranuras (5) y el número máximo de la historia que cada ranura tiene (10).
privado const int MAX_SLOTS = 5;
privado const int MAX_SLOT_HISTORY = 10;
A continuación, necesitamos un campo para almacenar la vista que permiten el acceso a la ventana de código actual. Esta variable tiene el tipo de datos de interfaz: iWpTextView.
vista de IWpfTextView privado;
El siguiente campo es la estructura de datos que contendrá todos los datos de las ranuras. Es una matriz donde cada elemento es una lista de cadenas. El tamaño de la matriz se obtiene de la constante MAX_SLOTS.
privada aClipboadSlotData de [] lista = new List [MAX_SLOTS];
Estos cuatro campos son todo lo que tenemos hasta ahora. Ahora tenemos que inicializar el aClipboardSlotData con cadenas vacías. Lo haremos en un nuevo método llamado InitializeClipBoard(), que tiene el siguiente código fuente:
Establece los valores iniciales de la aClipboadSlotData de la estructura de datos
privado IntilializeClipBoard() vacío
{
para (int i = 0; i < MAX_SLOTS; i ++)
{
aClipboadSlotData [i] = new List();
para (int j = 0; j < MAX_SLOT_HISTORY; j ++)
{
aClipboadSlotData [i]. Insertar (j, "");
}
}
}
El contenido de la InitializeClipBoard() es básicamente dos anidados para los bucles. Externo para la variable de bucle uso i entero ir a cada elemento de la matriz, que son las ranuras. Para cada ranura crear una nueva lista de cadenas. Interno para bucle inserta una cadena vacía en aClipboadSlotData [i] el método Insert() del tipo de datos de lista.
Tenemos que pedir el InitializeClipBoard() en el constructor de la clase MyControl justo después de la llamada a InitializeComponent(). Hasta ahora, la clase MyControl tiene este aspecto.
parcial clase MyControl: UserControl
{
privado const int MAX_SLOTS = 5;
privado const int MAX_SLOT_HISTORY = 10;
vista de IWpfTextView privado;
privada aClipboadSlotData de [] lista = new List [MAX_SLOTS];
MyControl() pública
{
InitializeComponent();
Añadir las ranuras vacías
IntilializeClipBoard();
}
Establece los valores iniciales de la aClipboadSlotData de la estructura de datos
privado IntilializeClipBoard() vacío
{
para (int i = 0; i < MAX_SLOTS; i ++)
{
aClipboadSlotData [i] = new List();
para (int j = 0; j < MAX_SLOT_HISTORY; j ++)
{
aClipboadSlotData [i]. Insertar (j, "");
}
}
}
}