<?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>Simon Ottenhaus &#187; Up</title>
	<atom:link href="http://familie-ottenhaus.de/simon/blog/tag/up/feed/" rel="self" type="application/rss+xml" />
	<link>http://familie-ottenhaus.de/simon/blog</link>
	<description>Uni &#38; Software</description>
	<lastBuildDate>Fri, 23 Dec 2011 13:15:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>c# &#8211; eigenes Control, Keys.Up, Down, Left, Right: OnKeyDown / OnKeyPress vs. ProcessCmdKey</title>
		<link>http://familie-ottenhaus.de/simon/blog/2009/12/csharp-eigenes-control-keys-up-down-left-right-onkeydown-onkeypress-vs-processcmdkey/</link>
		<comments>http://familie-ottenhaus.de/simon/blog/2009/12/csharp-eigenes-control-keys-up-down-left-right-onkeydown-onkeypress-vs-processcmdkey/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 19:06:36 +0000</pubDate>
		<dc:creator>Simon Ottenhaus</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Control]]></category>
		<category><![CDATA[Down]]></category>
		<category><![CDATA[Keys]]></category>
		<category><![CDATA[Left]]></category>
		<category><![CDATA[OnKeyDown]]></category>
		<category><![CDATA[ProcessCmdKey]]></category>
		<category><![CDATA[Right]]></category>
		<category><![CDATA[Up]]></category>

		<guid isPermaLink="false">http://familie-ottenhaus.de/simon/blog/?p=997</guid>
		<description><![CDATA[Wer ein eigenes Control (Steuerelement) in c# erstellt und dachte, dass er mit OnKeyDown Pfeiltasten erkennen kann ist auf dem Holzweg: View Code CSHARP1 2 3 4 5 6 protected override void OnKeyDown&#40;KeyEventArgs e&#41; &#123; /* wird für Pfeiltasten nicht aufgerufen */ base.OnKeyDown&#40;e&#41;; if &#40;e.KeyCode == Keys.Up&#41; MoveIndex&#40;-1&#41;; &#125; Bei Druck auf die Pfeiltasten (Keys.Up, [...]]]></description>
			<content:encoded><![CDATA[<p>Wer ein eigenes Control (Steuerelement) in c# erstellt und dachte, dass er mit OnKeyDown Pfeiltasten erkennen kann ist auf dem Holzweg:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p997code4'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p9974"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p997code4"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> OnKeyDown<span style="color: #000000;">&#40;</span>KeyEventArgs e<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #008080; font-style: italic;">/* wird für Pfeiltasten nicht aufgerufen */</span>
	<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">OnKeyDown</span><span style="color: #000000;">&#40;</span>e<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>e.<span style="color: #0000FF;">KeyCode</span> <span style="color: #008000;">==</span> Keys.<span style="color: #0000FF;">Up</span><span style="color: #000000;">&#41;</span> MoveIndex<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span>1<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Bei Druck auf die Pfeiltasten (Keys.Up, Keys.Down, Keys.Left, Keys.Right) wird <strong>weder OnKeyDown noch OnKeyPress aufgerufen</strong>.</p>
<p>Die Lösung bringt ProcessCmdKey:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p997code5'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p9975"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p997code5"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">protected</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">bool</span> ProcessCmdKey<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">ref</span> Message msg, Keys keyData<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>keyData <span style="color: #008000;">==</span> Keys.<span style="color: #0000FF;">Up</span><span style="color: #000000;">&#41;</span> MoveIndex<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span>1<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
	<span style="color: #0600FF;">return</span> <span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">ProcessCmdKey</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">ref</span> msg, keyData<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p>Hier muss allerdings beachtet werden, dass in keyData auch Strg, Shift und Alt kodiert werden. <em>keyData == Keys.Up</em> ist nur true, wenn keine Steuerungstaste (Strg, Shift, Alt) gleichzeitig gedrückt wurde.</p>
<p>Welche Tasten gedrückt sind lässt sich folgendermaßen herausfinden:</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p997code6'); return false;">View Code</a> CSHARP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p9976"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p997code6"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">bool</span> shift <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>keyData <span style="color: #008000;">&amp;</span> Keys.<span style="color: #0000FF;">Shift</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">bool</span> control <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>keyData <span style="color: #008000;">&amp;</span> Keys.<span style="color: #0000FF;">Control</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
<span style="color: #FF0000;">bool</span> alt <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>keyData <span style="color: #008000;">&amp;</span> Keys.<span style="color: #0000FF;">Alt</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
Keys unmodifiedKey <span style="color: #008000;">=</span> <span style="color: #000000;">&#40;</span>keyData <span style="color: #008000;">&amp;</span> Keys.<span style="color: #0000FF;">KeyCode</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></td></tr></table></div>

<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://familie-ottenhaus.de/simon/blog/2009/12/csharp-eigenes-control-keys-up-down-left-right-onkeydown-onkeypress-vs-processcmdkey/" target="_blank" class="liimagelink"><img src="http://familie-ottenhaus.de/simon/blog/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://familie-ottenhaus.de/simon/blog/2009/12/csharp-eigenes-control-keys-up-down-left-right-onkeydown-onkeypress-vs-processcmdkey/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

