C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: OnKeyUp のオーバーライドが出来ない


(過去ログ 99 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■58903 / inTopicNo.1)  OnKeyUp のオーバーライドが出来ない
  
□投稿者/ ボンノー (1回)-(2011/05/03(Tue) 16:55:40)

分類:[C#] 

WinXp VS2010Pro C# で行っています。

VC6は10年ぐらいやってましたが、Win7対応のためC#もやりたいと思っています。C#は7日目です〜

カスタムコントロールで数値(マイナス含む)だけしか入力できないコントロールを作りたい。
123と入力して先頭に”ー”を入れる→ -123 を実現するため
OnKeyUpで文字列が確定してから”ー”の位置を確認し1-23などのチェックをしたいのです。
本当はOnKeyPressで現在の入力位置を確認できればいいのでしょうが
またOnKeyUpで確定した文字列が得られるかも???です。

でも、なぜOnKeyUpがオーバーライドできないのかを知りたいのです。
ソースはこんなもんです。 エラーは OnKeyUp:オーバーライドする適切なメソッドが見つかりませんでした。
宜しくお願いします。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
public class NumericTextBox : TextBox
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
base.OnKeyPress(e);

String str = base.Text;

//"−”の処理
if (e.KeyChar == '-')
{
if (str.Length == 0) return;//先頭は "−”

if (str.Contains('-') == true)//"−”があれば入力不可
{
e.Handled = true;
return;
}
}
//これらはダメ
if (e.KeyChar != '\r' && e.KeyChar != '\t' && e.KeyChar != '\b' && (e.KeyChar < '0' || e.KeyChar > '9'))
{
e.Handled = true;
return;
}
}

protected override void OnKeyUp(KeyPressEventArgs e)
{
base.OnKeyUp(e);

String str = base.Text;
}
}
}

引用返信 編集キー/
■58904 / inTopicNo.2)  Re[1]: OnKeyUp のオーバーライドが出来ない
□投稿者/ やじゅ (1884回)-(2011/05/03(Tue) 17:35:17)
やじゅ さんの Web サイト
No58903 (ボンノー さん) に返信
> でも、なぜOnKeyUpがオーバーライドできないのかを知りたいのです。
> ソースはこんなもんです。 エラーは OnKeyUp:オーバーライドする適切なメソッドが見つかりませんでした。

protected override void OnKeyUp(KeyPressEventArgs e)
↓引数の型が違うから?
protected override void OnKeyUp(KeyEventArgs e)

引用返信 編集キー/
■58906 / inTopicNo.3)  Re[1]: OnKeyUp のオーバーライドが出来ない
□投稿者/ よねKEN (696回)-(2011/05/03(Tue) 17:38:57)
No58903 (ボンノー さん) に返信
> でも、なぜOnKeyUpがオーバーライドできないのかを知りたいのです。
> ソースはこんなもんです。 エラーは OnKeyUp:オーバーライドする適切なメソッドが見つかりませんでした。

メソッドの引数が間違っているからです。

Control.OnKeyUp
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.onkeyup.aspx
引用返信 編集キー/
■58907 / inTopicNo.4)  Re[1]: OnKeyUp のオーバーライドが出来ない
□投稿者/ Azulean (737回)-(2011/05/03(Tue) 17:39:44)
No58903 (ボンノー さん) に返信
> 本当はOnKeyPressで現在の入力位置を確認できればいいのでしょうが

SelectionStart プロパティである程度は制御可能に見えます。
ただし、範囲選択していたところで '-' が入力されたらどうするかとか面倒くさそうです。

> またOnKeyUpで確定した文字列が得られるかも???です。

「確定した文字列」とは何ですか?
単に base.Text に '-' が含まれているかどうか、含まれている場合は先頭かどうかで処理したらよいのでは?

> でも、なぜOnKeyUpがオーバーライドできないのかを知りたいのです。

適当に書くのではなく、ちゃんとどんな型か調べるようにしてください。
たとえば、TextBox のメソッド一覧は下記のようにありますし、ここから OnKeyUp のシグネチャを見ることができます。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.textbox_methods.aspx
引用返信 編集キー/
■58909 / inTopicNo.5)  Re[2]: OnKeyUp のオーバーライドが出来ない
□投稿者/ ボンノー (2回)-(2011/05/03(Tue) 18:00:51)
No58906 (よねKEN さん) に返信

有難うございます。初心者はつらいです。
引用返信 編集キー/
■58910 / inTopicNo.6)  Re[3]: OnKeyUp のオーバーライドが出来ない
□投稿者/ ボンノー (3回)-(2011/05/03(Tue) 18:04:48)
No58906 (よねKEN さん) に返信
> >
> 有難うございます。初心者はつらいです。
引用返信 編集キー/
■58911 / inTopicNo.7)  Re[2]: OnKeyUp のオーバーライドが出来ない
□投稿者/ ボンノー (4回)-(2011/05/03(Tue) 18:07:42)
No58904 (やじゅ さん) に返信
> ■No58903 (ボンノー さん) に返信
有難うございます。ご指摘のとおりでした。
解決済み
引用返信 編集キー/
■58912 / inTopicNo.8)  Re[2]: OnKeyUp のオーバーライドが出来ない
□投稿者/ ボンノー (5回)-(2011/05/03(Tue) 18:14:52)
No58907 (Azulean さん) に返信
> ■No58903 (ボンノー さん) に返信
> SelectionStart プロパティである程度は制御可能に見えます。
> ただし、範囲選択していたところで '-' が入力されたらどうするかとか面倒くさそうです。

SlectinoStartプロパティ というのがあるのは調べましたが、TextBoxとTexrBoXBaseの関係が?で手出しできませんでした。

> 「確定した文字列」とは何ですか?

OnKeyPressの段階で得る base.Text には今押したキーが入ってないので
実際に画面に出る文字列から処理を加えようかと思ってます

> 単に base.Text に '-' が含まれているかどうか、含まれている場合は先頭かどうかで処理したらよいのでは?

その考え方がシンプルでいいですね。

> 適当に書くのではなく、ちゃんとどんな型か調べるようにしてください。

そうします。こんな事で時間を取っちゃーだめですね。


引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -