<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>binarymind..</title>
	<atom:link href="http://binarymind.pl/feed/" rel="self" type="application/rss+xml" />
	<link>http://binarymind.pl</link>
	<description>there isn&#039;t much to choose from when you have only 0 and 1 available..</description>
	<lastBuildDate>Sun, 03 Jan 2010 13:46:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>TextBox przyjmujący tylko cyfry</title>
		<link>http://binarymind.pl/2010/01/textbox-przyjmujacy-tylko-cyfry/</link>
		<comments>http://binarymind.pl/2010/01/textbox-przyjmujacy-tylko-cyfry/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 13:45:35 +0000</pubDate>
		<dc:creator>kret</dc:creator>
				<category><![CDATA[Komputery]]></category>
		<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[TextBox]]></category>

		<guid isPermaLink="false">http://binarymind.pl/?p=328</guid>
		<description><![CDATA[Krótko o tym jak ograniczyć wprowadzane do TextBox'a znaki tylko do cyfr, czyli jak zmusić standardową kontrolkę, żeby zachowywała się niestandardowo :)]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Co do TextBox&#8217;a wpisać można wiadomo &#8211; wszystko :) Ale co jeśli chce się móc wprowadzać tam tylko określone znaki, w tym przypadku cyfry? Wiem, że to tak naprawdę jest banał, ale jednocześnie nie ma standardowej kontrolki, która zrobi to &#8222;sama z siebie&#8221;. Co wtedy? Ano, 5 minut z Google i można znaleźć nawet kilka gotowych projektów, tak jak <a title="Simple Numeric TextBox" href="http://www.codeproject.com/KB/edit/Simple_Numeric_TextBox.aspx" target="_blank">Simple Numeric TextBox</a> na niezawodnym <a title="The Code Project" href="http://www.codeproject.com/" target="_blank">The Code Project</a> :) Jeśli zastosowanie takiej gotowej dll&#8217;ki jest z pewnych powodów konieczne, to są gotowe rozwiązania, jak chociażby to podane przeze mnie. Można też w miarę szybko stworzyć taką zmodyfikowaną kontrolkę na bazie już istniejącej. No ale co tu dużo mówić, często powodem stosowania gotowców jest chyba jednak zwyczajne lenistwo albo nieśmiertelne &#8222;nie mam na to czasu&#8221; :) A wykorzystanie zwykłego TextBox&#8217;a i zmuszenie go to tego, żeby robił co chcemy, nie jest wcale takie trudne i czasochłonne. Pomyślmy chwilę.</p>
<p style="text-align: justify;"><strong>Co chcemy osiągnąć?</strong></p>
<p style="padding-left: 30px; text-align: justify;">Wprowadzać tylko cyfry do TextBox&#8217;a.</p>
<p style="text-align: justify;"><strong>Jak się do tego zabrać?</strong></p>
<p style="padding-left: 30px; text-align: justify;">Podczas wprowadzania znaków zachodzi zdarzenie KeyPress (naciśnięcie i zwolnienie przycisku). Jeśli więc przechwycimy wprowadzany przez użytkownika znak, wystarczy sprawdzić czy jest on cyfrą. W zależności od wyniku albo zdarzenie zostanie obsłużone albo nie.</p>
<p style="text-align: justify;"><strong>Ok, więc jak to zrobić w praktyce?</strong></p>
<p style="padding-left: 30px; text-align: justify;">Na przykład? Tak:</p>
<pre class="brush: csharp; title: ; notranslate">
void TextBox1KeyPress(object sender, KeyPressEventArgs e)
{
	if (char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar))
	{
		e.Handled = false;
	}
	else
	{
		e.Handled = true;
	}
}
</pre>
<p></code></p>
<p style="padding-left: 30px; text-align: justify;">Proste, prawda? Kropka w kropkę to co napisałem wcześniej :)</p>
<p style="text-align: justify;">Oczywiście nie jest to jedyny sposób, jest ich cała masa. Można w tym samym zdarzeniu np. przechwytywać tylko konkretne kody z tablicy ASCII, które odpowiadają cyfrom. Do pracy można też zatrudnić wyrażenia regularne. Wystarczy zastosować dla wprowadzanych znaków regułę:</p>
<pre class="brush: plain; title: ; toolbar: false; notranslate">\d+</pre>
<p>albo</p>
<pre class="brush: plain; title: ; toolbar: false; notranslate">[0-9]+</pre>
<p style="text-align: justify;">Tylko w przypadku tak banalnego filtrowania, czy jest koniecznie musimy używać klasy Regex? Dla mnie szkoda zachodu, skoro to samo można zrobić dużo prościej i szybciej.</p>
<p>Więc do dzieła!</p>
]]></content:encoded>
			<wfw:commentRss>http://binarymind.pl/2010/01/textbox-przyjmujacy-tylko-cyfry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

