24-мисол. Матнли майдонга фақат рақамларни киритилишини таъминлаш Матнли майдонда киритилган қийматни сонга текшириш учун TryParse функциясидан фойдаланилади. Ушбу функция киритилган маълумот сон бўлса True, акс ҳолда False қиймат қайтаради. Ушбу масалани бошқа усулда ҳал қилиш мумкин. Аммо маълумот киритилган вақтда маълумотни текширишни амалга ошириш мумкин. Бизнинг дастурда фойдаланувчи томонидан киритилган ҳар бир символни таҳлил қилади. Агар символ рақам бўлмаса матнли майдонга ушбу символни киритишга йўл қўйилмайди.
Ушбу масалани ҳал қилиш учун VS 2012 муҳитини ишга туширамиз. Сўнгра янги Windows Forms Application (Приложение Windows Forms) лойиҳасини ҳосил қилиб, унга FaqatRaqam номини берамиз.
Кейинги қадамда ToolBox панелидан TextBox бошқарув элементини танлаб, уни формага жойлаштирамиз. Қуйидаги 3.7 листингда ушбу дастурнинг коди келтирилган:
3.7 листинг. Фойдаланувчи томонидан киритилган маълумотни текшириш
// Ушбу дастурда фойдаланувчи томонидан киритилган хар бир символ тахлил килинади
// Агар символ ракам ёки Backspace булмаса, матнли майдонга ушбу символ чикарилмайди
using System;
using System.Windows.Forms;
namespace FaqatRaqam
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "Сон киритинг";
textBox1.Clear();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Факат ракам ёки Backspace тугмасига рухсат бериш:
if (Char.IsDigit(e.KeyChar) == true) return;
if (e.KeyChar == Convert.ToChar(Keys.Back)) return;
// Бошка символларни киритишга тускинлик килиш:
e.Handled = true;
}
}
}
Дастур кодида форма биринчи маротаба ишга туширилганда, сарлавхага this.Text = "Сон киритинг" каби қиймат киритамиз. Шунингдек, матнли майдон тозаланади. Матнли майдонда тугма босилганда textBox1_KeyPress ҳодиса қайта ишланади. Ушбу процедурада фойдаланувчи клавиатурадан киритган символи e аргументига узатилади. e.KeyChar хусусияти орқали ушбу символга эга бўлиш мумкин. IsDigit функцияси орқали эса ушбу символнинг рақам эканлиги текширилади. e аргументи Handled хусусиятига эга бўлиб, унинг true қийматга тенглиги матнли майдонда узатилган қиймат ёзилиши мумкин эмаслигини, false эса мумкинлигини англатади. Дастур интерфейси қуйидаги 3.8-расмда келтирилган.