- - PR -
直前のコントロールの取得について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-18 11:17
りんごさん、こんにちは。
ボタンが常にフォーカスを持つ必要がないのであれば、フォーカスがあたらないボタンを作ってみるとかは如何ですか? SetStyle(ControlStyles.Selectable, False) | ||||||||||||
|
投稿日時: 2007-04-18 11:27
考え方を間違えておりませんか? 標準の TextBox には PFKeyPress などというイベントはないのはご存知ですよね? 既存のクラス (今回の場合 TextBox) に機能を拡張したいのであれば、標準では無理ですよ。 どうしても標準の TextBox を使いたいのであれば、デコレータ パターンのような修飾が必要になるでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-04-18 11:38
レスありがとうございます。
Me.Button4.SetStyle(〜・・)という指定はできない?ですよね?
FuncKeyのNewで上記を行いました。 が・・ButtonのStyleを変更できないので、結果は同じでした。。
すみません。ミスです。FuncKey_PFKeyPressでした。 デコレータ パターンのような修飾とはどういったものでしょうか? 教えていただけませんか? | ||||||||||||
|
投稿日時: 2007-04-18 11:46
SetStyle メソッドのアクセス修飾子は protected なのでそうなるでしょう。
(何だか、わかっていてわざと書いているように見えますが) SetStyle メソッドは FuncKey ではなく Button に対して行う必要があります。 Button に対して行うには、Button の継承コントロールを作って内部で呼び出すか、 あるいはリフレクションを使って呼び出すことになるでしょう。
FuncKey_PFKeyPress イベントを発生させたいのであれば、デコレータ パターンの話は関係ありません。 FuncKey コントロール外の TextBox という前提でのお話ですから、聞き流して頂いて構いません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-04-18 11:51
解説どうもありがとうございます。
なんとなくですが、理解できました。というか、じゃんぬねっとさんの
でようやくわかった…というほうが正しかったりしますが orz で。 流れ的に違う方向へ行っている感じがしますが、とりあえず検索して来た 方のためにちょっとフォローを。
この方式ですが、以前テキストボックスで実装したことがあったので、ボタ ンでも行けるかな?と思っていたわけですが、ボタンではこういった方法は 取れませんでした。ついでに言うとテキストボックスでもフォーカス自体は 移動していて、キャレットが表示されないだけだった…というオチであったこ とを付け加えておきます。 # 要するに表示専用テキストボックスが作りたかったのね で、少し調べてみたことのまとめ。 シュリさんが書かれている方法で、Button を継承したコントロールがフォー カスを持たないようにすることはできました。 これを 12 個持つカスタムコントロール(ユーザーコントロールではないで すよね?)を作る…という感じでしょうか。 個人的な案としては、Panel を継承したカスタムコントロールを作成し、そ こに自前で 12 個のボタンを描いてしまう方法です。フォーカスは移らない し(だって Panel だもん)、ボタンはマウスでクリックされたら押された感じ に描画しておけばいくらでも作り放題。あとはキー入力がなんとかなれば …と、そこは今も同じですね。 VB5 の頃に、似たような感じでフォーカスを受け取りたくないので WIN32API で無理矢理ボタンを描画させていたのを参考にしました。 これが参考になると思います。サンプルが意外と(失礼)よくできているな と。 ButtnRenderer クラス (MSDN) _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2007-04-18 12:15
ぽぴ王子様。ご返答ありがとうございます。
今、Button派生クラスを作成中です。 それで、教えていただいたPanelベースのカスタムコントロールも 同時に作成してみます。 これでやっとAPIから逃れられるかも(涙)
(笑) 皆様、ご丁寧なレス、大変ありがとうございました。 |