/// <summary> /// Generates a new textbox with the necessary event handlers /// </summary> private TextBox MakeTextBox(int row, int col) { // Make a new textbox TextBox newBox = new TabbityTextBox(); newBox.BorderStyle = BorderStyle.None; newBox.Dock = DockStyle.Fill; newBox.Multiline = true; // Required to change height newBox.TextAlign = HorizontalAlignment.Center; newBox.MaxLength = 1; newBox.Margin = new Padding(1); // When the box is focused newBox.Enter += (object sender, EventArgs e) => { newBox.SelectAll(); if (this.onSelect != null) { this.onSelect(row, col); } }; newBox.Click += (object sender, EventArgs e) => newBox.SelectAll(); // When a key is pressed in the box newBox.KeyPress += (object sender, KeyPressEventArgs e) => { // Only allow digits if ((!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) || e.KeyChar == '0') { e.Handled = true; } }; newBox.TextChanged += (object Sender, EventArgs e) => { if (newBox.Text != "") { SetCell(row, col, Int16.Parse(newBox.Text)); newBox.SelectAll(); } }; // Special keys change hte focus to other boxen newBox.KeyDown += (object sender, KeyEventArgs e) => { switch (e.KeyData) { case Keys.Down: FocusBox(row + 1, col); e.SuppressKeyPress = true; break; case Keys.Up: FocusBox(row - 1, col); e.SuppressKeyPress = true; break; case Keys.Tab | Keys.Shift: case Keys.Left: FocusBox(row, col - 1); e.SuppressKeyPress = true; break; case Keys.Tab: case Keys.Enter: case Keys.Right: FocusBox(row, col + 1); e.SuppressKeyPress = true; break; case Keys.Back: case Keys.Space: case Keys.Delete: ClearCell(row, col); e.SuppressKeyPress = true; break; } }; return(newBox); }
/// <summary> /// Generates a new textbox with the necessary event handlers /// </summary> private TextBox MakeTextBox(int row, int col) { // Make a new textbox TextBox newBox = new TabbityTextBox(); newBox.BorderStyle = BorderStyle.None; newBox.Dock = DockStyle.Fill; newBox.Multiline = true; // Required to change height newBox.TextAlign = HorizontalAlignment.Center; newBox.MaxLength = 1; newBox.Margin = new Padding(1); // When the box is focused newBox.Enter += (object sender, EventArgs e) => { newBox.SelectAll(); if (this.onSelect != null) this.onSelect(row, col); }; newBox.Click += (object sender, EventArgs e) => newBox.SelectAll(); // When a key is pressed in the box newBox.KeyPress += (object sender, KeyPressEventArgs e) => { // Only allow digits if ((!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) || e.KeyChar == '0') { e.Handled = true; } }; newBox.TextChanged += (object Sender, EventArgs e) => { if (newBox.Text != "") { SetCell(row, col, Int16.Parse(newBox.Text)); newBox.SelectAll(); } }; // Special keys change hte focus to other boxen newBox.KeyDown += (object sender, KeyEventArgs e) => { switch (e.KeyData) { case Keys.Down: FocusBox(row + 1, col); e.SuppressKeyPress = true; break; case Keys.Up: FocusBox(row - 1, col); e.SuppressKeyPress = true; break; case Keys.Tab | Keys.Shift: case Keys.Left: FocusBox(row, col-1); e.SuppressKeyPress = true; break; case Keys.Tab: case Keys.Enter: case Keys.Right: FocusBox(row, col+1); e.SuppressKeyPress = true; break; case Keys.Back: case Keys.Space: case Keys.Delete: ClearCell(row, col); e.SuppressKeyPress = true; break; } }; return newBox; }