martes, 6 de marzo de 2012

Como Crear un Editor de Texto en C#

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:

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

    ResponderEliminar
    Respuestas
    1. 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)

      Eliminar
  2. una pregunta son funciones o directamente ya son los eventoss

    ResponderEliminar
    Respuestas
    1. 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.

      Eliminar
  3. 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

    ResponderEliminar
    Respuestas
    1. 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...

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

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

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

      Eliminar
  5. 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

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

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

    ResponderEliminar
    Respuestas
    1. 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#

      Eliminar
  8. 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!!!

    ResponderEliminar
  9. 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!!

    ResponderEliminar
  10. 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?

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

      Eliminar
  11. 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.

    ResponderEliminar
  12. 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

    ResponderEliminar
    Respuestas
    1. Esto es en C# ayuda por favor!

      Eliminar
    2. 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.

      Eliminar
  13. 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?

    ResponderEliminar
  14. 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

    ResponderEliminar
  15. 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.

    ResponderEliminar
  16. 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!

    ResponderEliminar

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