Blog2008年5月1日木曜日HitTest?以前のエントリでHitTestを利用して、セルをクリックした際のフォーカス制御を直感的にしたい、というのを書き始めていたけど、見事にすっかり忘れていたので改めて追記~。目的から考えると必要になるのは、クリックした際のマウス座標なんだよね。これを扱うのがHitTestと呼ばれるクラス。次のようなロジックにすると、クリックした座標が取得できたりする。e.Y)引数で渡しているものとかで、なんとなく想像がつくとおり基本的にはマウス系のイベントで利用するのが多いかな?その手のイベントではイベント引数でマウス座標が渡ってくるので、それを用いてHitTestを取得することになるんだよね。この情報をDataGridViewでホストしているユーザーコントロール、今までの話でいったらMultiLayoutControlへと渡してあげるってのが第一段階だと思う。あとは渡されたコントロール側で、その座標の直下に存在するコントロールを洗い出し、そのコントロールへフォーカスを設定してあげれば当初の目標は達成できるかな。洗い出すためのやりかたは、渡された座標がコントロールの領域に含まれるか、という判断になるね。Functionこんな感じでやってあげれば、あとは見つかったコントロールにフォーカスを移動してあげればOK。