Вы находитесь на странице: 1из 26

Tutorial Mens

Diseo del editor


1. Inicie Visual C# y cree un nuevo proyecto para implementar el esqueleto para una nueva
aplicacin que utilice un formulario de tipo Form como ventas principal. Denomnela Editor.
Ponga al formulario como ttulo "Editor" y como nombre Form1.
2. Aada a la aplicacin una barra de mens, una barra de herramientas y una barra de estado.

Propiedades
(Name)
BarraDeMenus
BarraDeHerramientas
BarraDeEstado

Tutorial Mens

3. Aada una caja de texto de la clase TextBox que admita mltiples lneas
y que muestre una barra de desplazamiento vertical. Denomnela ctEditor.
Haga que la caja de texto se acople a todos los lados del formulario para
que ocupe toda el rea de trabajo. Observe los valores de las propiedades
a continuacin y establezca desde la ventana de propiedades los
necesarios.

Tutorial Mens

En el propiedad anterior se puede observar que la propiedad Multiline de


ctEditor vale true, lo que define a este control como una caja de texto
multilnea.

A la propiedad Dock se le ha asignado el valor Fill del tipo enumerado


DockStyle para que todos los bordes del control se acoplen a los bordes de
a contenedor. A las propiedades AcceptsReturn y AcceptsTab se les ha
asignado el valor true para que las teclas Entrar y Tab sean capturadas por
este control.

Y a la propiedad ScrollBars se le ha asignado el valor Vertical del tiempo


enumerado ScrollBars para que el control muestre una barra de
desplazamiento vertical. La ruptura de lneas en el rea de texto,
propiedad WordWrap, est activada de forma predeterminada.
Guarde la aplicacin, complela y ejectela. Pruebe a escribir texto, acte
sobre la barra de desplazamiento, modifique el texto, inserte texto,
seleccione texto y borre texto. Como podr comprobar, todas estas
operaciones estn implcitas sin escribir nada de cdigo.

Tutorial Mens

Para hacer ms operativo nuestro editor, vamos a aadirle las rdenes de


Cortar, Copiar y Pegar. Estas rdenes nos permitirn seleccionar un texto y
moverlo o duplicarlo dentro del mismo documento, o bien llevarlo a otro
documento.
El portapapeles
El portapapeles permite transferir datos entre componentes, o bien entre
aplicaciones. Por ejemplo, muchas aplicaciones que manejan texto
incluyen un men rea de Edicin con las rdenes Cortar, Copiar y Pegar.
Cuando el usuario selecciona texto y ejecuta Cortar o Copiar, la aplicacin
transfiere los datos seleccionados en el documento al portapapeles y
cuando ejecuta la orden Pegar, los transfiere del portapapeles al
documento. Los datos seguirn en el portapapeles hasta que se ejecute la
orden Cortar o Copiar nuevamente.

Objeto Clipboard
Para colocar datos en el objeto Clipboard utilizaremos alguno de los
mtodos SetText, SetData. SetFileDropDownList, Setlmage o SetAudio,
dependiendo del formato de los mismos. Por ejemplo:
Clipboard.SetText("Esto es una cadena de Texto");
Para leer los datos colocados en el objeto Clipboard utilizaremos alguno
de los mtodos GetText, GetData, GetFileDropDownList, Getlmage o
GetAudioStream, dependiendo del formato de los mismos. Por ejemplo:
ctEditor.Text = Clipboard.GetText();

Tutorial Mens

Para limpiar el portapapeles utilizaremos el mtodo Clear. Por ejemplo:


Clipboard.Clear();
Los datos que podemos almacenar en el objeto Clipboard pueden estar en
cualquier formato. Para determinar este formato podemos utilizar alguno
de los mtodos ContainsText, ContainsData, ContainslileDropList.,
Containslmage, ContainsAudio. Por ejemplo:

if (Clipboard.ContainsImage() == true)
{
Debug.WriteLine("EL protapapeles contiene una Imagen");
}

Finalmente, el siguiente ejemplo muestra cmo guardar el contenido de


un fichero de audio en el portapapeles:
byte[] audio;
audio = File.ReadAllBytes("Mi fichero.wav");
Clipboard.SetAudio(audio);

Trabajar con texto seleccionado


En cualquier editor de texto el usuario puede seleccionar texto utilizando
el ratn o el teclado. Con el ratn, apunte al comienzo del texto a
seleccionar y arrastre con el botn izquierdo pulsado hasta haber
seleccionado el texto deseado. Con el teclado, site el punto de insercin
donde desea iniciar la seleccin y, manteniendo pulsada la tecla Shift
(maysculas), desplace el punto de insercin utilizando teclas de
desplazamiento. Los controles de texto de .NET derivados de la clase
TextBoxBase, como TextBox, ya incorporan esta caracterstica.
Adems de la capacidad de seleccin, la clase TextBoxBase proporciona
una serie de propiedades y mtodos que permiten trabajar con el texto
seleccionado a travs del portapapeles, lo cual evita tener que recurrir a la

Tutorial Mens

clasc Clipboard expuesta en el apartado anterior. Algunas de estas


propiedades y mtodos se exponen a continuacin.
Propiedades:
SelectedText. Permite obtener el texto seleccionado, o bien reemplazar el
texto seleccionado (puede ser nulo) por otro.
SelectionStart. Permite obtener o establecer el punto de inicio del texto

seleccionado en el control de texto.


SelectionLength. Permite obtener o establecer el nmero de caracteres

seleccionados en la caja de texto.


CanUndo. Permite saber si el usuario puede deshacer la operacin

anterior realizada en un control de texto.

Mtodos:
void Copy(). Copia el texto actualmente seleccionado en el control de

texto en portapapeles.
void Cut(). Mueve la seleccin actual del control de texto al portapapeles.
void Paste(). Reemplaza la seleccin actual del control de texto con el

contenido del portapapeles.


void Clear(). Borra todo el texto del control de texto.
void SelectAll(). Selecciona todo el texto del control de texto.

Tutorial Mens

void Select(int pos inicial, int pos final). Selecciona el texto que se

encuentran entre las posiciones especificadas.


void AppendText(string texto). Aade texto al texto actual del control de

texto.
void Undo(). Permite deshacer la ltima operacin de edicin.

Diseo de la barra de mens


Siguiendo con el diseo de la aplicacin Editor, cree los mens Archivo,
Edicin y Opciones. Para este planteamiento inicial, suponga que el men
Archivo est formado slo por la orden Salir, el men Edicin por las
rdenes Cortar, Copiar y Pegar, y el men Opciones por los submens
Fuente y Tamao. Algunas rdenes como Cortar especifican a la derecha
de su ttulo el conjunto de teclas que hay que pulsar para ejecutar la
orden directamente sin recurrir al men; estas teclas reciben el nombre

de aceleradores. Las propiedades para cada uno de los elementos de


los mens se resumen en la tabla siguiente. Para las propiedades que no
figuraren la tabla, se asumen los valores predeterminados. En esta tabla se
ha dispuesto cada men con sus elementos, distinguibles por el nivel de
sangrado.
Objeto
Archivo
Salir
Edicin
Cortar
Copiar

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
ShortcutKeys
Name
Text

Valor
menuArchivo
&Archivo
ArchivoSalir
&Salir
menuEdicion
&Edicion
EdicionCortar
Cor&tar
Ctrl+X
EdicionCopiar
&Copiar

Tutorial Mens

Pegar

Opciones
Fuente
Courier new
Arial
Predeterminada
Tamao
16
24
Predeterminado

ShortcutKeys
Name
Text
ShortcutKeys
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Ctrl+C
EdicionPegar
&Pegar
Ctrl+V
menuOpciones
&Opciones
OpcionesFuente
&Fuente
OpFuouriernew
&Fuente
OpFuArial
Arial
OpFuPredeterminada
predeterminada
OpcionesTam
&Tamao
Optam16
16
OpTam24
24
OpTamPredeterminado
Predeterminado

1.
Inicialmente se definen los objetos BarraDeMenus, menuEdicion y
EdicinPegar que darn lugar a la barra de mens, al men Edicin y a la
orden Pegar de ste, respectivamente.
2.

La propiedad Image establece la imagen para la orden Pegar.

3.
La propiedad ImageTransparentColor establece el color de la
imagen que actuar como si fuera transparente.
4.

La propiedad Name establece el identificador de la orden Pegar.

5.
La propiedad ShortcutKeys asocia el acelerador Ctrl+V con la orden
Pegar.
6.
La propiedad Text establece el ttulo y el nemnico de la orden
Pegar.

Tutorial Mens

7.
Y, finalmente, se aade la orden Pegar al men Edicin y ste a la
barra de mens.

Diseo de la barra de herramientas


Continuando con el diseo de la aplicacin Editor, cree una barra de
herramientas con tres botones: Cortar, Copiar y Pegar. Las propiedades
para cada uno de botones se resumen en la tabla siguiente. Para las
propiedades que no figuran en la tabla, se asumen los valores
predeterminados.

Objeto
Boton de pulsacin
(ToolStripButton)

Boton de pulsacin
(ToolStripButton)

Propiedad
Name
Image
ImageTransparentColor
toolTipText
Name
Image
ImageTransparentColor

Valor
btnbarCortar
imagenbtbarCortar.png
(segn la imagen)
Cortar
btnbarCopiar
imagenbtbarCopiar.png
(segn la imagen)

Tutorial Mens

Boton de pulsacin
(ToolStripButton)

toolTipText
Name
Image
ImageTransparentColor
toolTipText

Copiar
btnbarPegar
imagenbtbarPegar.png
(segn la imagen)
Pegar

1. Inicialmente se definen los objetos BarraDeHerramientas y


btbarPegar que darn lugar a la barra de herramientas y al botn
Pegar de sta, respectivamente.
2. La propiedad Image establece la imagen para el botn Pegar.
3. La propiedad IniageTransparentColor establece el color de la
imagen que actuar como si fuera transparente.
4. La propiedad Name establece el identificador del botn Pegar.
5. La propiedad ToolTipText asocia la descripcin "Pegar" con el botn
Pegar.
6. El mtodo AddRange aade el botn a la barra de herramientas.
Finalizado el diseo, el resultado ser similar al siguiente:

Tutorial Mens

Asociar un mtodo con un elemento de un men


Una vez diseada la interfaz, escribimos el cdigo correspondiente para
cada una de las rdenes de los mens. Anteriormente, en este mismo
captulo, ya expusimos que para escribir un mtodo que respondiera al
mensaje generado por una orden de un men despus de haber hecho clic
sobre ella, primero haba que asignar a dicha orden un controlador de
eventos Click.

Archivo - Salir

Para asociar un controlador de eventos Click con la orden Salir del men
Archivo dirjase al diseador de formularios y haga doble clic sobre dicha
orden. Despus complete el mtodo aadido como se muestra a
continuacin. El resultado ser siguiente:

private void salirToolStripMenuItem_Click(object sender, EventArgs e)


{
Close();
}

El resto de las rdenes que expondremos a continuacin, se escriben de


forma anloga.
Edicin - Cortar

Cuando el usuario haga clic en la orden Cortar se ejecutar el mtodo


asociado con ella. Por lo tanto, aada a la clase Form1 un controlador de
eventos que maneje el evento Click de esta orden, moviendo el texto
seleccionado en ctEditor portapapeles:

private void cortarToolStripMenuItem_Click(object sender, EventArgs e)


{
ctEditor.Cut();
}

Tutorial Mens

El mtodo Cut corta el texto que haya seleccionado en el objeto clEditor y


lo enva al portapapeles.
El botn Cortar debe realizar la misma accin. Por lo tanto, debemos
asociarle el mismo controlador de eventos. Para ello, dirjase al diseador
de formularios, seleccione el botn, dirjase a la ventana de propiedades,
muestre la lista de eventos, seleccione el evento Click y elija de la lista el
controlador EdicionCortar_Click. El resultado ser que el mtodo anterior
manipular tanto el evento del EdicionCortar como el evento Click de
btbarCortar.

Edicion - Copiar

La orden Copiar se diferencia de la orden Cortar en que no borra el texto


seleccionando. Anlogamente a como hicimos con la orden Cortar, aada
en Form1 un controlador de eventos que maneje el evento Click de esta
orden, copiando el texto seleccionado en ctEditor en el portapapeles:
private void EdicionCopiar_Click(object sender, EventArgs e)
{
ctEditor.Copy();
}

EL mtodo Copy copia en el portapapeles el texto que haya seleccionado


en el Objeto ctEditor.
El botn Copiar debe realizar la misma accin. Por lo tanto, debemos
vincularle con este mismo controlador de eventos. Pata ello, proceda
anlogamente a como lo hizo con el botn Copiar.

Tutorial Mens

Edicin - Pegar

Cuando el usuario haga clic sobre la orden Pegar, se colocar el texto del
portapapeles sobre el texto seleccionado o en su defecto, a partir de la
posicin del punto de insercin. Para implementar esta orden, aada en
rn Form1 un controlador de eventos que maneje el evento Click de la
misma, copiando el texto del portapapeles en ctEditor:
private void EdicionPegar_Click(object sender, EventArgs e)
{
ctEditor.Paste();
}

El mtodo Paste inserta el texto del portapapeles en el objeto ctEditor a


partir del punto de insercin, o bien reemplaza el texto seleccionado.
El botn Pegar debe realizar la misma accin. Por lo tanto, debemos
asociarle el mismo controlador de eventos Click anterior. Para ello,
proceda anlogamente a como lo hizo con los botones Cortar y Copiar.

Opciones - Fuente

A continuacin, vamos a desarrollar el cdigo para el men Opciones. Este


men visualiza dos submens: Fuente, que presenta tres elementos que
permiten cambiar el tipo de letra, y Tamao, que presenta otros tres
elementos que permiten cambiar el tamao de la letra.
El nmero de fuentes disponibles en Visual C# vara en funcin de la
configuracin de su sistema operativo. En nuestro editor slo vamos a
incluir tres tipo: Courier new, Arial y el tipo de letra establecido de forma
predeterminada.
En una caja de texto de la clase TextBox solamente puede utilizarse una
fuerte, lo cual significa que cuando se modifique el tipo de letra para la
caja de texto todo el texto cambiar a ese tipo de letra. Por lo tanto, para
cambiar la fuente en el editor de textos, simplemente tenemos que
modificar la fuente actual de la caja de texto por medio de su propiedad
Font.

Tutorial Mens

Segn lo expuesto, aada en Form1 un controlador de eventos que


manejador de evento Click de la orden Courier new, estableciendo la
nueva fuente:

private void OpFuCourierNew_Click(object sender, EventArgs e)


{
Font f = ctEditor.Font;
ctEditor.Font = new Font("Courier New",f.Size,f.Style);
}

Este mtodo obtiene la fuente establecida actualmente, crea una nueva


fuente manteniendo invariable el tamao y el estilo, pero con un nombre
determinado y, finalmente, asigna esta nueva fuente a la caja de texto.
Para el objeto OpFuArial proceda de forma anloga; esto es, aada su
contralador de eventos Click y escrbalo as:

private void OpFuArial_Click(object sender, EventArgs e)


{
Font f = ctEditor.Font;
ctEditor.Font = new Font("Arial", f.Size, f.Style);
}

A continuacin, para poder restablecer la fuente con la que se inici la


aplicacin, vamos a almacenar en un objeto de la clase Font referenciado
por la variable fuentePr las caractersticas del tipo de letra
predeterminado de la caja de texto Para ello, aada esta variable como
miembro de la clase Form1:
private Font fuentePr;

1. Despus, cuando se muestre la ventana que da lugar al editor (evento


Load cargar ventana) obtendremos la referencia a la fuente
predeterminada con la que creado el componente de texto y la

Tutorial Mens

almacenaremos en esa variable. Por lo tanto aada el controlador para el


evento Load del formulario y compltelo como se indica a continuacin:
private void Form1_Load(object sender, EventArgs e)
{
fuentePr = ctEditor.Font;
}
Finalmente, aada en Form1 un controlador de eventos que maneje el
evento Click de la orden Predeterminada, estableciendo la fuente
predeterminada:
private void OpFuPredeterminada_Click(object sender, EventArgs e)
{
Font f = ctEditor.Font;
ctEditor.Font = new Font(fuentePr.SystemFontName, f.Size, f.Style);
}

Este mtodo obtiene la fuente establecida actualmente, crea una nueva


fuente manteniendo invariable el tamao y el estilo, pero con el nombre
de la fuente predeterminada y, finalmente, asigna esta nueva fuente a la
caja de texto.
Adems del control TextBox, la biblioteca de .NET proporciona otro
denominado RichTextBox que permite establecer el tipo de fuente a nivel
de carcter.
Opciones - Tamao

Anlogamente a como sucede con el tipo de fuente, ocurre con el tamao


de la misma. Cuando se modifique el tamao de la fuente para la caja de
texto, todo el texto cambiar a ese tamao. Por lo tanto, para variar el
tamao del texto que muestra el editor de textos, simplemente tenemos
que modificar el tamao de la fuente actual y establecer esta fuente de
nuevo por medio de su propiedad Font.
Segn lo expuesto, aada en Form1 un controlador de eventos que
maneje el evento Click del objeto OpTaml6, estableciendo el tamao 16:

private void opTam16_Click(object sender, EventArgs e)

Tutorial Mens
{
Font f = ctEditor.Font;
ctEditor.Font = new Font(f.SystemFontName, 16.0F, f.Style);
}

Este mtodo obtiene la fuente establecida por omisin, crea una nueva
fuente manteniendo invariable el nombre de la fuente (la familia) y el
estilo, pero con a tamao determinado y, finalmente, asigna esta nueva
fuente a la caja de texto.
Para el objeto OpTam24 proceda de forma anloga; esto es, aada un
controlador de eventos que maneje el evento Click, estableciendo el
tamao 24.
A continuacin, para poder restablecer el tamao de la fuente con la que
a inici la aplicacin, utilizaremos el objeto Font referenciado por la
variable fuentePr. Para ello, aada en Form1 un controlador de eventos
que maneje el evento Click del objeto OpTamPredeterminado. Cul ser
la respuesta a este evento?
Simplemente restablecer el tamao predeterminado de la fuente,
conservando la familia y el estilo:
private void opTamPredeterminado_Click(object sender, EventArgs e)
{
Font f = ctEditor.Font;
ctEditor.Font = new Font(f.SystemFontName, fuentePr.Size, f.Style);
}

Habilitar o inhabilitar los elementos de un men (Cortar, Copiar y Pegar)


Una orden de un men puede ejecutarse slo si est habilitada. Esto
quiere decir que una aplicacin puede habilitar o inhabilitar los elementos
de un men, en funcin de que tengan o no actividad en el instante en el
que el men es desplegado. Cada vez que se selecciona un men para
desplegarlo se produce el evento DropDownOpening, cuando est
desplegado se produce el evento DropDownOpened, cuando se hace clic
en un elemento, el DropDownltemClicked y cuando se cierra, el
DropDownClosed. Por lo tanto, podremos utilizar el evento
DropDownOpening (se va a desplegar el men) para mostrar habilitada

Tutorial Mens

cada orden del men que pueda desempear en este instante su funcin
o, en caso contrario, mostrarla inhabilitada.

Siguiendo con nuestra aplicacin, el men Edicin tiene tres rdenes:


Cortar, Copiar y Pegar. Un pequeo anlisis nos puede conducir a la
conclusin de las rdenes Cortar y Copiar tiene sentido que estn activas
si hay un bloque texto seleccionado; en cambio, la orden Pegar estar
siempre activa.
Segn lo expuesto, la condicin para activar las rdenes Cortar y Copiar
que el usuario haya seleccionado un bloque de texto, lo que puede
saberse interrogando el valor de la propiedad SelectedText de la clase
TextBox.
ctEditor.SelectedText.Length() != 0

Esta propiedad hace referencia al objeto String que se corresponde con el


texto seleccionado. Si no hay texto seleccionado, su longitud ser cero, o
lo que es lo a expresin anterior dar como resultado false.
Para realizar el proceso descrito, aada en Form1 un controlador de
eventos que maneje el evento DropDownOpening del objeto
menuEdicion. Qu tiene que hacer este mtodo? Simplemente asignar a
la propiedad Enabled de las rdenes Cortar y Copiar un valor true si hay
texto seleccionado (habilitar rdenes), o e en caso contrario (inhabilitar
rdenes).
Doble Click

Tutorial Mens

private void menuEdicion_DropDownOpened(object sender, EventArgs e)


{
bool textoSeleccionado = (ctEditor.SelectedText.Length != 0);
EdicionCopiar.Enabled = textoSeleccionado;
EdicionCortar.Enabled = textoSeleccionado;
}

Marcar el elemento seleccionado de un men


Los elementos de un men pueden ser marcados cuando son
seleccionados, bien automticamente poniendo su propiedad
CheckOnClick a true, o bien bajo programacin por medio de la propiedad
Checked. Esto permite identificar de forma visual el elemento del men
actualmente seleccionado.

Tutorial Mens

Como ejemplo, vamos a dejar sealada en el men Fuente la fuente que


est actualmente seleccionada. Quiere esto decir que cuando el usuario
haga clic en un elemento de este men, ste debe quedar marcado y el
que estaba marcado debe dejar de estarlo; esto descarta el uso de la
propiedad CheckOnClick. Por otra parte, cuando arranque la aplicacin el
elemento Predeterminada debe aparecer sealado. Esto puede hacerse
durante el diseo, poniendo su propiedad Checked a valor true.
Segn lo expuesto, proceda paso a paso como se indica a continuacin:
1. Inicie la propiedad Checked del elemento Predeterminada con el valor
true.

Tutorial Mens

2. Durante la ejecucin, cuando el usuario seleccione otro tipo de letra,


hay que quitar la seal de donde est y ponerla en el tipo de letra
seleccionado. Para realizar esta operacin, modifique los controladores
del evento Click de cada uno de los elementos del men Fuente de la
forma que se indica a continuacin. Por ejemplo, el controlador de la
orden Courier new quedara as:

private void OpFuCourierNew_Click(object sender, EventArgs e)


{
Font f = ctEditor.Font;
ctEditor.Font = new Font("Courier New",f.Size,f.Style);
OpFuCourierNew.Checked = true;
OpFuArial.Checked = false;
OpFuPredeterminada.Checked = false;
}

Este mtodo se ejecutar cuando se seleccione la orden Courier new, la


cual quedar sealada porque pone su propiedad Checked a valor true.
As mismo, pone la propiedad Checked del resto de las rdenes a false
para quitar la marca que pudiera tener cualquiera de ellas.
Como ejercicio, proceda de forma anloga con el men Tamao.
Deshacer
Implementar la operacin de Deshacer tiene dos partes: una, recordar las
operaciones de edicin realizadas para poderlas deshacer; y dos, aadir a
la interfaz de usuario las rdenes que realicen ese trabajo. Como ejemplo,
vamos a aadir a nuestra aplicacin Editor estas operaciones.
Recordar las ediciones reversibles

Para que un componente de texto pueda soportar las operaciones de


Deshacer y Rehacer debe recordar cada operacin de edicin que ha
tenido lugar, el orden en el que se han sucedido y lo que supone el
deshacerlas. Para realizar este trabajo, la clase TextBoxBase proporciona
los mtodos CanUndo y Undo. El primero permite saber si el usuario

Tutorial Mens

puede deshacer la ltima operacin realizada en un control de texto y el


segundo la deshace. Desgraciadamente este control slo recuerda la
ltima operacin que tuvo lugar.

Aadir a la interfaz la orden Deshacer

El paso siguiente es aadir al men Edicin la orden Deshacer con su


controlador de eventos correspondientes. Para ello, siga los pasos
indicados a continuacin:
1.- Aada al men Edicin un componente EdicionDeshacer de la clase
ToolStripMenuItem. Para ello, apunte con el ratn a la orden Copiar, haga
clic con el botn secundario del ratn y ejecute Insertar Menultem.

2.- Aada en Form1 el controlador que maneje el evento Click de la orden


Deshacer. Para ello, haga doble clic sobre esta orden y escriba el
controlador as:

private void EdicionDeshacer_Click(object sender, EventArgs e)


{
if (ctEditor.CanUndo) ctEditor.Undo();
}

El mtodo CanUndo devuelve true si hay una operacin de edicin que se


puede deshacer y false en caso contrario. El mtodo Undo deshace la
ltima operacin de edicin que fue hecha.

Tutorial Mens

Listas desplegables en mens


En la aplicacin anterior el men Opciones presentaba otros dos mens:
Fuentes y Tamao dcada uno de los cuales presentaba, a su vez, tres
posibilidades de eleccin. El problema que planteamos a continuacin
consiste en sustituir el men Opciones por dos listas desplegables: una
que muestre las posibles fuentes que se pueden seleccionar y la otra, los
tamaos de las fuentes. La figura siguiente muestra el aspecto final que
tendr la barra de mens propuesta.

Como se puede observar en la figura siguiente, un objeto


ToolStripComboBox combina una caja de texto y una lista desplegable,
permitiendo al usuario escribir una nueva entrada o seleccionar un
elemento de la lista. El estilo de la lista viene determinado por su
propiedad DropDownStyle que, por omisin, vale DropDown (caja de
texto editable y una lista desplegable).
Para resolver el problema planteado, primero elimine el men Opciones
de la aplicacin anterior; para ello, dirjase a la ventana de diseo,
seleccinelo y pulse la tecla Supr (suprimir o Del). Despus, elimine todos
los controladores relacionados con los elementos de ese men.
Aada, desde la lista que se despliega a partir de la caja de texto "Escriba
aqu" de la barra de mens, dos elementos ToolStripComboBox con las
propiedades que se observan:

Tutorial Mens

La propiedad Name identifica la lista y Size fija el tamao del control lista
sin desplegar.
Name = menuFuente
Name = menuTam

Para aadir los elementos a cualquiera de las dos listas durante el diseo,
seleccione la lista, dirjase a la ventana de propiedades, seleccione la
propiedad Items, edtela y escriba los elementos que va a contener.
Tambin puede fijar a travs de su propiedad Text el valor de la misma
que ser inicialmente mostrado. Estas operaciones hacen que el asistente
aada cdigo anlogo al siguiente:

Tutorial Mens

Courier New
Arial
Predeterminada
En Items(Coleccin)

Con lo expuesto, completamos el ejercicio. Cuando el usuario arranque la


aplicacin, escriba texto y decida cambiar la fuente por medio del control
menuFuente, este control notificar de lo sucedido generando el evento
SelectedlndexChanged. La respuesta a este evento tiene que ser asignar a
la caja de texto fuente seleccionada, respetando el tamao y el estilo de la
misma. Segn esto, aada el controlador mencionado y escrbalo como se
indica a continuacin:

Tutorial Mens

Esto Aplica tambin al


menFuente

Doble clic aqu

private void menuFuente_SelectedIndexChanged(object sender, EventArgs e)


{
ctEditor.Font = new
Font(menuFuente.SelectedItem.ToString(),ctEditor.Font.Size,ctEditor.Font.Style);
}

Tutorial Mens

Este mtodo crea una nueva fuente manteniendo invariable el tamao y el


tilo actuales, pero con el nombre de la fuente seleccionada de la lista y,
finaliza, te asigna esta nueva fuente a la caja de texto

Se puede observar que el cdigo anterior fija el tipo de fuente en funcin


ndice (Selectedlndex) del elemento seleccionado.

Por otra parte, si el usuario opta por cambiar el tamao de la fuente,


entonces elegir uno de los valores expuestos por el control menuTam,
generndose evento SelectedlndexChanged. Segn esto, aada el
controlador que maneje evento y escrbalo como se indica a continuacin:

private void menuTam_SelectedIndexChanged(object sender, EventArgs e)


{
ctEditor.Font = new Font(ctEditor.Font.SystemFontName,
float.Parse(menuTam.SelectedItem.ToString()),ctEditor.Font.Style);
}

Este mtodo crea una nueva fuente manteniendo invariable el nombre y


el estudio actuales, pero con el tamao seleccionado de la lista y,
finalmente, asigna esta frente a la caja de texto.

Вам также может понравиться