Please help me with building an equivalent to the Numbers only input validation code for using with NSTextField using Monobjc.

Case: I want the NSTextField to allow the user to input only numbers(0 to 9), '.' and '-' symbols.

Request: Well I am stuck. I am able to handle key press events in Windows Forms and Gtk#. But I am new to Mac OS X and need your help with building an equivalent method to handle key press events on Mac OS X using Monobjc. I am providing my sample code of key press event handler using Windows Forms and Gtk# bellow. (I have read about NSFormater, NSCell, NSView's keyDown method - but I can't seem to find my way on doing the same using Monobjc!)

Provided: 1. Windows Forms & 2. Gtk# numbers only input sample code.

Need: Monobjc code for numbers only input validation sample code.

//Windows Forms Code to handle KeyPressEvents

private void OnlyNumbers(KeyPressEventArgs e)
        {
            char c = e.KeyChar;
if (!(c >= '0' && c <= '9' || c == '.' || c == '-' || c == 8)) //8 is the keycode of the backspace key
            {
                e.Handled = true;
            }
        }

//Then I am calling the method on the text fields KeyPress handler

private void txtNumber_KeyPress(object sender, KeyPressEventArgs e)
        {       
                OnlyNumbers(e);
        }

//End of Windows Forms Code

//Gtk# Code to handle/capture & kill Unwanted Keys

private void OnlyNumbers(object o, Gtk.TextInsertedArgs args)// [GLib.ConnectBefore]Gtk.
        {
                        try
                        {
                                Console.WriteLine("text : " + 
args.Text.ToString());
                                int pos = ((Entry)o).Position;
                                string c = ((Entry)o).GetChars(pos, pos+1);
                                char d;
                                Char.TryParse(c[0].ToString(), out d);
                                if (!(d >= '0' && d <= '9' || d == '.' || d == 
'-'))
                                {
                                        ((Entry)o).SelectRegion(pos, pos+1);
                                        ((Entry)o).DeleteSelection();
                                }
                        }
                        catch (System.IndexOutOfRangeException e) {}
        }

//Then I am passing the method to the textfields OnTextInserted event handler

protected virtual void txtNumber_OnTextInserted (object o, Gtk.TextInsertedArgs args)
        {
                        OnlyNumbers(o, args);
        }
//End of Gtk# code

Reply via email to