Re: Saludo y pregunta ultra tonta

Jonatan Anauati <[email protected]>
Newsgroups gmane.comp.gnome.mono.hispano
Message-ID <1235335372.12653.20.camel@dino-thunder_ng>
Hola, el motivo es que el widget TextView está capturando todas las
pulsaciones, filtrando las que 
inserta en el texto y dejando solo las que mencionaste antes.

La forma de capturar todas las teclas es sobreescribir el método
"OnKeyPressEvent", que viene por
herencia desde Gtk.Widget. Ejemplo:

using Gtk;
using System;
namespace TestGtkSharp
{
    class CustomTextView : TextView
    {
        // Este metodo se corre antes de llamar a KeyPressEvent. Este es
el encargado
        // de decidr si se maneja (return true) o no se maneja la
inserción (return false).
        protected override bool OnKeyPressEvent (Gdk.EventKey evnt)
        {
            // todo lo quieras hacer empezaría aquí.
            System.Console.WriteLine ("OnKeyPress (): {0}",
evnt.Key.ToString());
            base.OnKeyPressEvent (evnt);
            // si retornas false, el evento KeyPressEvent no se correrá
(y ninguna
            // de sus manejadoras, por lo cual no se insertará el texto
en el text view).
            return true;
        }
    }

    class MainClass
    {
        public static void Main (string [] args)
        {
            Application.Init();
            Gtk.Window win = new Window ("Titulo");
            CustomTextView tv = new CustomTextView ();
            win.Add (tv);
            win.Resize (200,200);
            win.ShowAll ();
            Application.Run ();
        }
    }
}

Este código puede mostrar por consola TODAS las teclas que se presionan,
y luego al
retornar el True en dicho lugar, el símbolo es insertado en el text
view.

Espero te sirva, un saludo.

El dom, 22-02-2009 a las 15:38 -0200, Juan BC escribió:

> Eso ya estaba, por que como explique algunos eventos los toma, solo que 
> no teclas alfanuméricas.
> Acá esta el codigo de la partial class donde se agrega el evento que 
> auntogenera monodevelop.
> 
> http://code.google.com/p/jbc-mini-projects/source/browse/trunk/mono/monook/gtk-gui/MainWindow.cs
> 
> Jonatan Anauati escribió:
> > Buenos dias, te comento que lo que te falta hacer es enlazar tu 
> > manejador de evento (void OnTextview1KeyPressEvent) con el evento 
> > KeyPressEvent:
> > 
> > window.KeyPressEvent += new KeyPressEventHandler (OnTextview1KeyPressEvent);
> > 
> > Con esto te debería funcionar. Te paso un ejemplo:
> > 
> > using Gtk;
> > using System;
> > 
> > namespace TestGtkSharp
> > {
> >     class MainClass
> >     {
> >         public static void Main (string [] args)
> >         {
> >             Application.Init();
> >             Gtk.Window win = new Window ("Ejemplo");
> >             win.KeyPressEvent += new KeyPressEventHandler 
> > (shortcutCallBack);
> >             win.Show ();
> >             Application.Run ();
> >         }
> > 
> >         private static void shortcutCallBack (object sender, 
> > KeyPressEventArgs args)
> >         {
> >             System.Console.WriteLine ("press");
> >         }
> >     }
> > }
> > 
> > Un saludo.
> > El dom, 22-02-2009 a las 07:21 -0200, Juan BC escribió:
> >> Muy buenas, ante todo un saludo a la gente de mono hispano, me llamo 
> >> Juan soy desarrollador (casi ingeniero) tengo conocimientos en Java, 
> >> python, bash, erlang y ahora me sente con C#, era una deuda que me tenia 
> >> y era hora de empezar con .net/mono
> >>
> >> La pregunta esta debe haber salido MIL veces pero juro ante satanás que 
> >> googlee como un condenado y no encontré la respuesta:
> >>
> >> Como cuerno con GTK# logro atrapar un evento de teclado KeyPress solo me 
> >> atrapa los shift y teclas especiales pero nada de alfanumérico.
> >>
> >> Les adhiero mi función (que no anda) y les paso un link donde esta el 
> >> repo del pet-program que estoy haciendo asi espero me ayuden a 
> >> solucionarlo. Gracias
> >>
> >>
> >> protected virtual void OnTextview1KeyPressEvent (object o, 
> >> Gtk.KeyPressEventArgs args)
> >>          {
> >>                  Console.WriteLine("DLDLDL");
> >>
> >>          }
> >>
> >>
> >> SVN [proyecto para monodevelop]
> >> http://code.google.com/p/jbc-mini-projects/source/browse/trunk/mono/monook/
> >> _______________________________________________
> >> Mono-hispano mailing list
> >> [email protected] <mailto:[email protected]>
> >> https://listas.hispalinux.es/mailman/listinfo/mono-hispano
> > 
> > -- 
> > por favor evita el enviarme archivos adjuntos de MS Word. 
> > Ver:http://www.gnu.org/philosophy/no-word-attachments.es.html
> > printk("fent linux\n");
> > 
> 
> _______________________________________________
> Mono-hispano mailing list
> [email protected]
> https://listas.hispalinux.es/mailman/listinfo/mono-hispano

-- 
por favor evita el enviarme archivos adjuntos de MS Word. 
Ver:http://www.gnu.org/philosophy/no-word-attachments.es.html
printk("fent linux\n");

_______________________________________________
Mono-hispano mailing list
[email protected]
https://listas.hispalinux.es/mailman/listinfo/mono-hispano
smime.p7s (application/x-pkcs7-signature, 3.4 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.