none
Codigo para botones copiar, cortar y pegar

    Question

  • Hola tengo unos botones copiar , pegar y cortar era para ver si podia meter un codigo ya definido q supongo q existira para hacer las funciones indicadas para cada uno
    Wednesday, May 26, 2010 3:30 PM

Answers

  • Prueba con este código :

          string clipBoardText = "";
          foreach (Control c in this.Controls)
          {
            if (c.GetType()==typeof(TextBox) )
            {
              if (!String.IsNullOrEmpty(((TextBox)c).Text) && ((TextBox)c).Enabled == true && ((TextBox)c).ReadOnly == false)
              {
                clipBoardText += ((TextBox)c).Text + Environment.NewLine;
              }
            }
          }
    
          if (!String.IsNullOrEmpty(clipBoardText))
            Clipboard.SetDataObject(clipBoardText);

    Si tienes alguna iniquietud, no dudes en preguntar,

    Si te sirvió la información de este POST, por favor no olvides marcarla como respuesta.

    Cordial saludo,

     


    Mauricio Atanache G.
    Thursday, May 27, 2010 6:08 AM
  • La verdad no creo que haya nada que te haga eso de manera "automatica", debes implementarlo, creo que podrías hacerlo fácilmente con una funcion recursiva en la que si el control es un form o un panel se vuelva a llamar a si misma pasandole como parámetro el contenedor sería algo así :


    string clipBoardText = "";
    
    private void CopiaDatos( Control contenedor )
    {
       foreach (Control c in contenedor.Controls)
       {
        if (c.GetType()==typeof(Form) || c.GetType()==typeof(Panel) )
          CopiaDatos( c );
    
        if (c.GetType()==typeof(TextBox) )
        {
         if (!String.IsNullOrEmpty(((TextBox)c).Text) && ((TextBox)c).Enabled == true && ((TextBox)c).ReadOnly == false)
         {
          clipBoardText += ((TextBox)c).Text + Environment.NewLine;
         }
        }
       }
    }
    
    private void EjecutaCopia()
    {
      CopiaDatos( this );
      if (!String.IsNullOrEmpty(clipBoardText))
       Clipboard.SetDataObject(clipBoardText);
    
    }

     No he probado muy bien el código, pero éste método te debería funcionar sin muchos problemas,

     

    Cordial saludo,

     


    Mauricio Atanache G. - MCP
    Bogotá - Colombia
    "Bienaventurados los Pesimistas. Por que hacen BACKUPS."
    Thursday, May 27, 2010 7:53 PM

All replies

  • hola

    bueno habria que determianr que quieres copiar y pegar , epro basicamente la diea es que uses la clase Clipboard

     

    Clipboard Copy and Paste with C#

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, May 26, 2010 3:39 PM
  • Hoola

    en el ejemplo

    private void button1_Click(object sender, System.EventArgs e)

            {

                // Takes the selected text from a text box and puts it on the clipboard.

                if (textBox1.SelectedText != "")

                    Clipboard.SetDataObject(textBox1.SelectedText);

                else

                    textBox2.Text = "No text selected in textBox1";

            }

    Veo que lo hace para un texbox determinado, no se si se podria hacer para todos los texbox de algun modo sin tener que hacer muchos if; admas de tener en cuenta las propiedades enabled o readonly para cada componente

    Wednesday, May 26, 2010 3:50 PM
  • Prueba con este código :

          string clipBoardText = "";
          foreach (Control c in this.Controls)
          {
            if (c.GetType()==typeof(TextBox) )
            {
              if (!String.IsNullOrEmpty(((TextBox)c).Text) && ((TextBox)c).Enabled == true && ((TextBox)c).ReadOnly == false)
              {
                clipBoardText += ((TextBox)c).Text + Environment.NewLine;
              }
            }
          }
    
          if (!String.IsNullOrEmpty(clipBoardText))
            Clipboard.SetDataObject(clipBoardText);

    Si tienes alguna iniquietud, no dudes en preguntar,

    Si te sirvió la información de este POST, por favor no olvides marcarla como respuesta.

    Cordial saludo,

     


    Mauricio Atanache G.
    Thursday, May 27, 2010 6:08 AM
  • Hola lo que pasa es que es una aplicación MDI donde tengo varios formularios, luego tendria que ir mirando uno a uno todos los forms. A parte los textbox a veces estan dentro de paneles luego:

     foreach (Control c in this.Controls)


    Esto solo te lo mira en los controles directos del form, sin embargo no te los mira para cada uno en particular; por ejem si hay un panel en el form q tiene 3 tbox solo te mira el panel no entra en los tbox

    Thursday, May 27, 2010 11:48 AM
  • Existe algun evento que emule igual q si pulsaras el boton derecho del raton y seleccionas copiar/pegar o cortar?
    Thursday, May 27, 2010 11:54 AM
  • La verdad no creo que haya nada que te haga eso de manera "automatica", debes implementarlo, creo que podrías hacerlo fácilmente con una funcion recursiva en la que si el control es un form o un panel se vuelva a llamar a si misma pasandole como parámetro el contenedor sería algo así :


    string clipBoardText = "";
    
    private void CopiaDatos( Control contenedor )
    {
       foreach (Control c in contenedor.Controls)
       {
        if (c.GetType()==typeof(Form) || c.GetType()==typeof(Panel) )
          CopiaDatos( c );
    
        if (c.GetType()==typeof(TextBox) )
        {
         if (!String.IsNullOrEmpty(((TextBox)c).Text) && ((TextBox)c).Enabled == true && ((TextBox)c).ReadOnly == false)
         {
          clipBoardText += ((TextBox)c).Text + Environment.NewLine;
         }
        }
       }
    }
    
    private void EjecutaCopia()
    {
      CopiaDatos( this );
      if (!String.IsNullOrEmpty(clipBoardText))
       Clipboard.SetDataObject(clipBoardText);
    
    }

     No he probado muy bien el código, pero éste método te debería funcionar sin muchos problemas,

     

    Cordial saludo,

     


    Mauricio Atanache G. - MCP
    Bogotá - Colombia
    "Bienaventurados los Pesimistas. Por que hacen BACKUPS."
    Thursday, May 27, 2010 7:53 PM
  • ¡Hola!

    ¿Fue posible solucionar su problema?

    Gracias
    Rafael Fagundes - Marque la respuesta como correcta si te ha sido de utilidad!
    Tuesday, June 01, 2010 12:40 PM
    Moderator