Como Crear un Editor de Texto en C#

martes, 6 de marzo de 2012

Lo primero sera agregar un control menustrip que sera el que nos servirá para hacer el menú.



agregamos un rich textbox.



damos clic en una flechita que sale arriba del rich textbox para ver las tareas del rich textbox y seleccionamos acoplar en contenedor primario para que tome el tamaño del formulario.



luego le cambiamos el nombre al rich textbox en este caso yo le puse editor es importante que le pongan el mismo nombre para no tener problemas con los codigos de c#.



luego creamos el menu de nuestra aplicación el bloque de archivo quedaría así.



el bloque del menú editar quedaría así.



y el bloque del menú de fuente quedaría así.



luego empezamos a programar el menú empezamos con nuevo damos doble clic sobre nuevo y nos enviara al método donde se programara que tiene que hacer la aplicación cuando el usuario de clic en nuevo.



para no estar poniendo las capturas de cada método del menú aquí les dejo el código de cada método solo den doble clic en cada parte del menú y vayan pegando el código en cada método del menú.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TUTORIAL
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void nuevoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo clear para limpiar el texto del rich textbox
editor.Clear();
}

private void abrirToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de openfiledialogo que nos servira para abrir archivos
OpenFileDialog Open = new OpenFileDialog();
System.IO.StreamReader myStreamReader = null;
//se especifica que tipos de archivos se podran abrir y se verifica si existe
Open.Filter = "Text [*.txt*]|*.txt|All Files [*,*]|*,*";
Open.CheckFileExists = true;
Open.Title = "Abrir Archivo";
Open.ShowDialog(this);
try
{
//este codigo se utiliza para que se pueda pueda mostrar la informacion del archivo que queremos abrir en el rich textbox
Open.OpenFile();
myStreamReader = System.IO.File.OpenText(Open.FileName);
editor.Text = myStreamReader.ReadToEnd();

}
catch (Exception) { }

}

private void guardarComoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo savefiledialog que nos servira para guardar el archivo
SaveFileDialog Save = new SaveFileDialog();
System.IO.StreamWriter myStreamWriter = null;
//al igual que para abrir el tipo de documentos aqui se especifica en que extenciones se puede guardar el archivo
Save.Filter = "Text (*.txt)|*.txt|HTML(*.html*)|*.html|All files(*.*)|*.*";
Save.CheckPathExists = true;
Save.Title = "Guardar como";
Save.ShowDialog(this);
try
{
//este codigo se utiliza para guardar el archivo de nuestro editor
myStreamWriter = System.IO.File.AppendText(Save.FileName);
myStreamWriter.Write(editor.Text);
myStreamWriter.Flush();

}
catch (Exception) { }

}

private void salirToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo close para cerrar el formulario
Close();
}

private void atrasToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo undo en el rich textbox para volver atras
editor.Undo();
}

private void adelanteToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo redo en le rich textbox para regresar adelante
editor.Redo();
}

private void copiarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo copy para copiar lo que este seleccionado en el rich textbox
editor.Copy();
}

private void pegarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo paste para pegar lo que tenemos copiado en el rich textbox
editor.Paste();
}

private void cortarToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo cut para cortar lo que este seleccionado en el rich textbox
editor.Cut();
}

private void seleccionarTodoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utilza el metodo SellecAll para seleccionar todo lo que este en el rich textbox
editor.SelectAll();
}

private void borrarTodoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se utiliza el metodo clear para limpiar el texto del rich textbox
editor.Clear();
}

private void fuenteToolStripMenuItem1_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo fontdialog que servira para cabiar el tipo de fuente y tamaño
FontDialog font = new FontDialog();
//se aplica el tipo de fuente del rich textbox al objeto que hemos creado
font.Font = editor.Font;
//se hace la condicion para cambiar el tipo de fuente al presionar el boton ok
if (font.ShowDialog() == DialogResult.OK)
{
editor.Font = font.Font;
}

}

private void colorDeFuenteToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo colordialog que servira para cabiar color de la fuente
ColorDialog color = new ColorDialog();
//se hace la condicion para cambiar el color de la fuente al presionar el boton ok
if (color.ShowDialog() == DialogResult.OK)
{
editor.ForeColor = color.Color;
}
}

private void colorDeFondoToolStripMenuItem_Click(object sender, EventArgs e)
{
//se crea un objeto de tipo colordialog que servira para cabiar color del rich textbox
ColorDialog fondo = new ColorDialog();
//se hace la condicion para cambiar el tipo de color del rich textbox al presionar el boton ok
if (fondo.ShowDialog() == DialogResult.OK)
{
editor.BackColor = fondo.Color;
}
}
}
}




para una mejor comprensión el código esta comentado cualquier duda que tengan la pueden preguntar aqui al final les tiene que quedar la aplicación así..

33 comentarios:

dsoftmillenium dijo...

buen tutorial

Cristian Torres dijo...

gracias...

Skafid dijo...

excelente :D gracias, disculpa como hacer para que resalte una palabra en especifico? :D

Cristian Torres dijo...

De nada...
Y pues respondiéndote tu pregunta podrías definir la palabra que quieres resaltar y usar el método Find para buscar la palabra y cambiarle el color.
Puedes encontrar información aquí.
RichTextBox.Find (Español)
RichTextBox.Find (Ingles)

lupita zeltzin dijo...

una pregunta son funciones o directamente ya son los eventoss

Cristian Torres dijo...

son los eventos de cada botón, pero si quieres puedes hacerlo en funciones y luego dentro de los eventos solo invocas la función.

Pondré el código completo.

lupita zeltzin dijo...

Grcias ya hice los eventos pero tengo una duda es que me dejaron un trabajo igual a este pero en lugar de guardar como tambien es guardar y no se como hacerle por que dice que si el archivo ya existe solo se tiene q auto guardar y si no existe pasaria lo mismo que un guardar como, mi duda es solo como le hago para guaradr la informacion en el mismo archivo sin abrir una ventana

lupita zeltzin dijo...

el .Force me marca que no existe en mis librerias y tengo las mismas que tu cual sera el problema?

Cristian Torres dijo...

Hola, por motivos de tiempo no puedo contestarte con un ejemplo claro pero así ligero se me ocurre que lo podrías hacer declarado una variable string a nivel de clase que se inicialice vacía osea null, luego dentro del evento guardar verificas si el archivo ya existe y si existe solo guardas la informacion sin necesidad de mostrar la ventana de dialogo.

como te dije por motivos de tiempo no puedo contestarte con un ejemplo con código, pero te invito a que pases por el foro de microsoft Foro Microsoft y publiques tu pregunta ahí seguro alguien que tenga tiempo te pueda contestar y si no yo con gusto te contesto cuando tenga tiempo.

Saludos...

Cristian Torres dijo...

.Force que linea de código, si quieres te envió el proyecto completo dame tu correo.

lupita zeltzin dijo...

es zeltzin17@gmail.com

Mary Lopez dijo...

Excelente!! quiero hacer lo mismo pero que lo que realize en mi textbox se guarde como imagen como le hago? esque soy nueva en esto.. te lo agradeceria bastante!! graxias

Cristian Torres dijo...

No te entendí que es lo que quieres

Mar LoR dijo...
Este comentario ha sido eliminado por el autor.
NoSoyYo dijo...

podrias hacer la funcion buscar palabra y reemplazar, necesito saber como agregar la extension del richTextBox.

Cristian Torres dijo...

Te dejo un link donde podes encontrar lo que quieres.
Buscar y reemplazar texto en un control RichTextBox

Esta en vb pero podes usar un Convert para pasarlo a c#

Mar LoR dijo...

Hola Cristian!! disculpa no se si podas ayudareme!! de casualidad tu sabes como puedo mover un picturebox en tiempo de ejecucion? te lo agradeceria infinitamente!!!

Cristian Torres dijo...

Hola Mar LoR una pregunta similar se contesto en los foros de msdn talvez te sirva ARRASTRAR Y SOLTAR DE FORMA PRECISA

Mar LoR dijo...

Ok muchas gracias Cristian!!!

Mar LoR dijo...

Cristian!! disculpa pero esta aplicacion me da dolores de cabeza!! podrias ayudarme en como pongo una imagen que esta en un picturebox como marca de agua? y como mandarla al fondo de un texto? aaa te lo agradecere toda mi vidaaa!!! Gracias!!

Raul Jimenez dijo...

Gracias me ayudo mucho

Cris209 dijo...

Hola!
excelente ejemplo!
Lo he probado en mi aplicación y funciona casi todo...no sé por qué, pero la opción deshacer en lugar de deshacer los cambios, se limita a seleccionar todo el texto del RichTextbox.
¿Sabes a qué se debe?

Cristian Torres dijo...

Pues que raro para eso solo tendrias que usar el método undo ya que con este volves atrás.
Richtextbox1.Undo();

Harry dijo...

Gracias, me levanto el animo, hasta ahora supongo que mejoraste mas tu trabajo, yo quisiera ponerle numeración de linea y poner de colores a palabras especificas, como podría hacer eso, (le habla un nova... en c#). gracias.

Anónimo dijo...

Cris enviame el poyecto jeje soy Ahoruz men de Taringa, mi mail es: vaals@live.com.mx
saludos y buena pagina men

Jhon dijo...

Mano como le aria para hacer esto?

Crear un programa que sea capaz de realizar altas, bajas, consultas, y modificasiones en una base de datos que trabaj e con un archivo .txt, la estructura de la BD es la siguiente ID(Clave primaria 3 caracteres numerico), nombre(50), Apellido(50), Direccion(50).

Politicas de Operacion >>>

Altas.- No se puede insertar un registro con ID duplicado.

Bajas.- Verificar a la hora de hacer bajas que se borren todos los registros de una misma localidad.

Consultas.- Podra buscar un registro individual o mas de un ragistro que coincida con el criterio de nombre y apellido.

Modificasiones.- Se podran modificar todos los campos excepto el ID.

Notas.- Para las operaciones de eliminacion y de modificasion es necesario utilizar un archivo auxiliar donde se almacenara la informacion util, la informacion restante sera eliminada.

El separador de campos sera el signo de interrogacion

Jhon dijo...

Esto es en C# ayuda por favor!

Cristian Torres dijo...

Pero porque tienes que usar un archivo de texto?
Lo que yo te puedo recomendar si vas usar un archivo de texto es una librería de la cual he escuchado cosas buenas
FileHelpers
Personalmente nunca la he usado pero he visto buenos comentarios de ella te facilitara el trabajo con archivos de texto(lee la documentación que hay).

De ahí lo demás que mencionas altas bajas etc puedes revisar como hacer estas operaciones en este articulo.
[ADO.NET] – Parte 5 - Ejemplos Simples – Operaciones CRUD

Es con lo que te puedo ayudar ya que como te lo mencione no soy muy amigo de usar archivos de texto para este tipo de informacion.

Saludos.

JaDiaz dijo...

Muy buen ejemplo... ha estudiar ..

Globitoshop dijo...

Cristian buenisimo viejo!! Sos la hostia! soy de El Salvador y sos de los mejores viejo! gracisa por los tutos!! Hey a que UNiversidad vas?

Globitoshop dijo...

Podrias hacer un tuto de como ocupar JQuery? me han mencionado mucho JQuery y me interesaria aprenderlo!! Talves algunos ejmplos de como hacer sistemas con JQuery o solo una apliaciaon web

Cristian Torres dijo...

Hola Globitoshop.

Estudio en la UTEC he de mencionarte que en las universidades solo te enseñan lo basico de cada lenguaje la mayoria de conocimientos los adquiri leyendo(libros articulos etc) y practicando.

Con respecto a lo de JQUERY pronto publicare algunos ejemplos de como usarlo en asp.net.

Saludos.

Globitoshop dijo...

Man yo soy de la UTEC!! y nunca te he visto!!
este ciclo lleve clase con el ingeniero Callejas me he ido por la programacion web pero vos sos la hostia viejo!!

Al rato nos vemos! saludos!

Publicar un comentario en la entrada

Nota: solo los miembros de este blog pueden publicar comentarios.