tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルUserControlでのコントロールへの移動ができない!
記事No888
投稿日: 2004/06/06(Sun) 16:09
投稿者ATTU
[OSのVer]:Windows XP Pro    [VBのVer]:VB.NET2002
いつもお世話になっております。
チェックボックスのような機能をもったコントロールを作成し
  作成チェックボックス
    ・チェック部はGraphicsで作成
    ・ラベル
    ・キー取得のためテキストボックス  
テキストなどと組み合わせたコントロールを作成して
他のコントロール(作成コントロールでも)には.Focus()で移動できるのですが
"作成チェックボックス.Focus()"を指定すると"作成チェックボックス.Focus()"
;を指定したコントロ
ールに戻ってしまいます。
ちなみに"Enter"は発生しています。

チェックボックスにフォーカスを移す方法を教えてください・・・
よろしくおねがいします。
  

[ツリー表示へ]
タイトルRe: 自己レス
記事No900
投稿日: 2004/06/09(Wed) 10:07
投稿者ATTU
解決しました。(とりあえず)

Control.Focus()をする前に
Control.Select()をすると動きました。
どうしてなんでしょうか?
心配なので原因がわかる方教えてください。
よろしくお願いします。

[ツリー表示へ]
タイトルRe^2: 自己レス
記事No904
投稿日: 2004/06/10(Thu) 03:11
投稿者たくボン
いまいち作成されているカスタムコントロールの状況がつかめないので、回答はできないのですが
> ・チェック部はGraphicsで作成
このGraphicsというのは、Paintイベントでオーナー描画を行っているのでしょうか?

また基底クラスには何を指定しているのかで動作が変わる場合もあります。UserControlならば、
StyleBitにControlStyles.SelectableがデフォルトでTrueになっているのでフォーカスを受け取ること
ができますが、上記BitはFalseになっているコントロールから派生させた場合はフォーカスを受け取れ
ません。Control.Select()で動作するのならば、SelectableはTrueになっていると思いますが現状で
は、どのような状況かはっきりと推測できないです。

質問をする場合は、なるべく簡潔にわかりやすい文面にされた方が良いです(^-^)
(変数名に日本語を使わない、Control.Focus()のようなクラス名と混同する表現は避ける等。今回の場
合だと、MyUserControl.Focus()などにするとわかりやすいですね。)

またイベントの中で、EnableやFocusに関係する処理をされていませんか?
デバックの基本は、Console.Write等で確認することです。あとは関連しそうなイベントを1つずつ実装
してみて、どのイベントを実装した時にフォーカスが受け取れなくなるか確認してみるとかですね。

原因は必ずあるので、好奇心は大事です(^-^)時間があればもう少し状況を教えてください。

[ツリー表示へ]
タイトルRe^3: 自己レス
記事No906
投稿日: 2004/06/10(Thu) 14:28
投稿者ATTU
たくボンさんレス・指摘ありがとうございます。
自分はCOBOLからVBを始めたので、今ひとつVBの仕組みが理解できないままプログラムを作っているの
で、何をどの様に質問してよいのかわからない状態です。今後とも指摘・注意をお願いします。

> このGraphicsというのは、Paintイベントでオーナー描画を行っているのでしょうか?
はい。

> また基底クラスには何を指定しているのかで動作が変わる場合もあります。
基底クラスとは"Inherits"のことでしたら UserControl を指定してあります。

> 質問をする場合は、なるべく簡潔にわかりやすい文面にされた方が良いです(^-^)
> 今回の場合だと、MyUserControl.Focus()などにするとわかりやすいですね。)
今後注意します。また、変な文面の時には指摘お願いします。

> してみて、どのイベントを実装した時にフォーカスが受け取れなくなるか確認してみるとかですね

> 原因は必ずあるので、好奇心は大事です(^-^)時間があればもう少し状況を教えてください。
時間を作って報告します。

色々とありがとうございました。

[ツリー表示へ]
タイトルRe^4: 自己レス
記事No908
投稿日: 2004/06/11(Fri) 12:28
投稿者たくボン
> 自分はCOBOLからVBを始めたので、今ひとつVBの仕組みが理解できないままプログラムを作っている

COBOLからですか(^-^)COBOLとVBはちょっと感覚が違うので頑張ってくださいね。
僕もCOBOLは学生の頃少しだけ勉強しましたが、いまいちしっくりこなかったので・・・(-_-;)Visual
COBOLはあんまり触っていませんが、これならなんとなくVBに似ているのですぐに慣れますよ(^^)

UserControlを使って市販レベルのコントロールを自作するのであれば、VBよりC#の方がいいかもしれま
せんね。VBは、いくつかのメソッドやイベントがインテリセンスの一覧から隠されているので、簡単な
コントロールをすばやく作るにはいいですが、細かい処理をしたいのならC#という方法もあります。
(VBでもメソッドを直接記述すれば同様の処理ができますが、インテリセンスに出てこないので僕はC#
を使っています。)

でもVBは一番好きな言語です。頑張ってください(^-^)v

[ツリー表示へ]