くだスレC#
■ このスレッドは過去ログ倉庫に格納されています
0084デフォルトの名無しさん
NGNG意図しない動作をするときはデバッガでその部分の前にブレークポイントを
置いてステップ実行で動作を確認すると問題点がわかります。
製品版でなく .NET SDK を使っているなら、デバッガはここです。
C:\Program Files\Microsoft.NET\FrameworkSDK\GuiDebug\DbgCLR.exe
うまくいかない理由は、もう確認済みかもしれませんが、
KeyPress イベントはキーを処理する前に呼ばれるイベントなので2度目の
'.' が入力された時点では Text プロパティに '.' はまだ一つしかありません。
e.Handled = true; とするだけでその入力がキャンセルになるので Text から
削除する必要はありません。
あと、case (char)46: は case '.': とも書けます。
派生クラスにイベント処理を実装するなら KeyPress イベントではなく
OnkeyPress メソッドをオーバーライドする方法もあります。
protected override void OnKeyPress( KeyPressEventArgs e )
{
switch ( e.KeyChar )
{
case '.':
if ( this.Text.IndexOf( '.' ) >= 0 )
{
e.Handled = true;
}
break;
}
base.OnKeyPress( e );
}
■ このスレッドは過去ログ倉庫に格納されています