DOBON.NET DOBON.NETプログラミング掲示板過去ログ

最大テキストボックス

環境/言語:[VB.Net ]
分類:[.NET]

テキストボックスで最大文字数を指定すると、指定した文字数までしか入らないと同じように、質問したいのは文字数ではなくバイト数を指定できますか?
2005/03/10(Thu) 15:41:06 編集(投稿者)

こんにちは、じゃんぬねっと です。

■No9718に返信(ドミトルさんの記事)
> テキストボックスで最大文字数を指定すると、指定した文字数までしか入らないと同じように、
> 質問したいのは文字数ではなくバイト数を指定できますか?

「指定ができるか」と言えば「できない」という回答になります。
CB_LIMITTEXT を SendMessage しても出来なかったと記憶しております。

ですが、ご自分で KeyPress, TextChanged などを使えば実装可能だと思います。
もちろん、WM_PASTE なども考慮する必要がありますが...。



// 日本語おかしかったので修正しました。m(_ _)m
この記事は(投稿者)削除されました
こんにちは、じゃんぬねっと です。

■No9725に返信(ドミトルさんの記事)
> これで6バイト以上は受付ないようになっています。
> ここで少し不具合があります。
> TextBox1のカーソルが一番先頭に来てしまいます。
> これを一番最後にする方法があるのなら教えてください。

安易な方法では、TextBox の Text を編集する前のカレット位置を保存して、
処理した文字数分を加味しつつ、復元してあげるなどいかがでしょう?
カレット位置は SelectionStart プロパティで取得できます。
> 安易な方法では、TextBox の Text を編集する前のカレット位置を保存して、
> 処理した文字数分を加味しつつ、復元してあげるなどいかがでしょう?
> カレット位置は SelectionStart プロパティで取得できます。

あ、”カレット”って言うんですね。初めて知りました(爆)
じゃんぬねっとさんのおっしゃる通りにしました。
ありがとうございます

ここからは雑談なのですが

じゃんぬねっとさんが愛用した(?)VBの本ってありますか?
参考にしているサイトとかありましたら教えてください。
解決済み!
こんにちは、じゃんぬねっと です。

■No9729に返信(ドミトルさんの記事)
> あ、”カレット”って言うんですね。初めて知りました(爆)
> じゃんぬねっとさんのおっしゃる通りにしました。
> ありがとうございます

カレット、キャレット、カーソル、どれでも正しいみたいですよ。(^^)

> じゃんぬねっとさんが愛用した(?)VBの本ってありますか?
> 参考にしているサイトとかありましたら教えてください。

その辺りは、こちらのスレッドが参考になるかもしれません。(^^)
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=8891&no=0&KLOG=3

わからないことはその都度調べることこそが大切だと思います。

結局のところ好みがありますから、本屋で 1 通り立ち読みして頂いて、
読んでいて「飽きない本」を選ぶと良いのではないかと思っております。



# 本は読まないといいつつも、最近 ASP.NET 本を探しております... (T-T;)
解決済み!
すいません。横入り失礼します。
ドミトルさんの質問と同じなのですが、
文字が制限されている所まできている時には
文字を入力できないようにすることは出来ますか?

途中から文字を入力すると、最後の文字が消えてしまいます。
例えば、バイト制限を20バイトにします。
"あああああいいいいい" → "ああああああいいいい"
のように"あ"が5〜6個"い"が5〜4個になります。
文字バイトが20バイトになったら、文字の入力を無効にすることは出来るでしょうか?
BacSpace、Delのボタン等で文字を消したらまた入力が可能にするようにしたいのです。ご存知の方教えてください。
こんにちは、じゃんぬねっと です。

■No9769に返信(ルインさんの記事)
> 文字が制限されている所まできている時には
> 文字を入力できないようにすることは出来ますか?

制限バイトに達したら、KeyPress イベントで e.Handle = true; とする。
または WndProc の WM_CHAR を拾う。
または ... と、まあたくさんあるわけです。(^^)
つまり、現在どのような実装をしているかに因って選択する道は変わりますよね。
2005/03/14(Mon) 12:11:14 編集(投稿者)
2005/03/14(Mon) 12:11:09 編集(投稿者)

WndProcの使い方がぜんぜんわからないのですが
何ならかの処理を行うとmessageIDを取得するのですよね?
ヘルプを見てもまったく手付かずの状態です。
よろしければご教授お願いします。

#MessageIDの一覧はどこにありますか?
こんにちは、じゃんぬねっと です。

■No9775に返信(ルインさんの記事)
> WndProcの使い方がぜんぜんわからないのですが
> 何ならかの処理を行うとmessageIDを取得するのですよね?
> ヘルプを見てもまったく手付かずの状態です。
> よろしければご教授お願いします。

えーと、ですから... (^-^;)
私は貴方の隣にいる人ではありませんので、貴方のソースが判らないんですよ。
どこまで出来ているかも判らないのに、それをどう説明すれば良いのでしょうか?
掲示板の趣旨としては、全部 1 から教えを乞うってのは如何なもんでしょ?

> #MessageIDの一覧はどこにありますか?

一覧くらいなら、Google で一発で発見できますけど。
http://yokohama.cool.ne.jp/chokuto/urawaza/message/index_main.html

API ビューアで「WM_」から検索するのが普通でしょう。

WndProc じゃない方が良いと思うんですけどね。(^^)
ついでに言えば、WM_PASTE の対処などもしなくてはなりません。
2005/03/16(Wed) 09:25:16 編集(投稿者)

返事が遅くなりました。

コードは↓のようにしています

KeyPressイベントで

Dim JIS As Encoding = Encoding.GetEncoding("Shift_JIS")
Dim BytesCount As Int16

BytesCount = JIS.GetByteCount(TextBox.Text)
IF BytesCount > 7 Then

e.Handle = True

End IF

e.Handle = Trueは半角の文字と、数字は打ち込めませんが
全角の場合は打ち込めてしまいます。
全角の処理はどうすればいいでしょうか?
こんにちは、じゃんぬねっと です。

■No9841に返信(ルインさんの記事)
> e.Handle = Trueは半角の文字と、数字は打ち込めませんが
> 全角の場合は打ち込めてしまいます。
> 全角の処理はどうすればいいでしょうか?

ものの見事に、こちらのスレに話を繋げられそうですね。(^-^A)
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=9814
同じことを質問していますね。マルチになる?(汗)

マルチになりそうなので、このスレは止めます。
自分でアレンジしてみることにします。
> 同じことを質問していますね。マルチになる?(汗)

ご心配なく〜。
こういう場所での「マルチ」とは、
『同一の人物があちこちの掲示板で同タイミングに同じ質問をしていること』
だと思います。
ので、マルチポストにはならないかと。

じゃんぬさんが仰ったのは、
「向こうにも同じような質問があるよ〜」
と参考場所を促してくれているのだと思いますよ。

お力になれず申し訳ないですが、頑張ってください。

DOBON.NET | プログラミング道 | プログラミング掲示板