Re: Saludo y pregunta ultra tonta
Jonatan Anauati <[email protected]>
| Newsgroups | gmane.comp.gnome.mono.hispano |
|---|---|
| Message-ID | <1235335636.12653.23.camel@dino-thunder_ng> |
Me corrijo, la inserción es realizada al llamar a
base.OnKeyPressEvent (evnt);, lo mas correcto sería:
...
protected override bool OnKeyPressEvent (Gdk.EventKey evnt)
{
// lo que quieras hacer va acá.
System.Console.WriteLine ("OnKeyPress (): {0}",evnt.Key.ToString());
return base.OnKeyPressEvent (evnt);
}
Un saludo.
El dom, 22-02-2009 a las 17:42 -0300, Jonatan Anauati escribió:
> 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