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

指定座標がスクロールバーであることを検知したい

環境/言語:[使用言語:C# Framework:3.5 / 使用アプリ:NetAdvantage For Windows Form 2009]
分類:[.NET]

グレープシティが出しているNetAdvantageのUltraWindTreeに関しての質問です。
(3rdパーティだからの問題ではないと思ったのでこちらに書かせて頂いてます)

UltraWinTree.onMouseDownイベントでGetNodeFromPoint(座標からノードオブジェクトを取得する)を呼び出してクリックされた座標のノードを取得するように組んでいます。
その中に取得したオブジェクトがNULLかNULLで無いかを分岐させる処理があります。
ノードのある箇所とない箇所で上記の処理で分岐させることが出来たのですが、
スクロールバーがあった場合、スクロールバーを触るとonMouseDownイベントが走ってしまいます。
この場合は分岐させる処理に入ることなく処理をスルーさせたいのですが、スクロールバーが触られたことを検知することが出来ません。
回避する方法があればご教授願います。

要すると、指定座標がスクロールバーであるかどうかを検知する方法が知りたいです。(#WinAPIになるのかな〜。探しても見つかりませんでした。)
■No28161に返信(310さんの記事)
> グレープシティが出しているNetAdvantageのUltraWindTreeに関しての質問です。
> (3rdパーティだからの問題ではないと思ったのでこちらに書かせて頂いてます)

UltraWindTree? UltraWinTree であれば Grapecity さんではなく Infragistics さんですね。

> UltraWinTree.onMouseDownイベントでGetNodeFromPoint(座標からノードオブジェクトを取得する)を呼び出してクリックされた座標のノードを取得するように組んでいます。

ElementFromPoint メソッドを使用しても区別できないでしょうか?
カラム ヘッダか Node かの区別はできたハズなので、できそうですが。
Infragisticsって独立したんですね。
独立する前にNetAdvantageをグレープシティから買った覚えがあったので^^;
下記の通り見事に回避できました。
if(UltraWinTree.UIElement.ElementFromPoint(e.Location).GetType()==typeof(Infragistics.Win.WinScrollBar.ScrollThumbUIElement)){
return;
}

#リファレンスにモロに書いてありました。まさかの見逃しです。
すいません。ありがとうございました。



■No28162に返信(じゃんぬねっとさんの記事)
> ■No28161に返信(310さんの記事)
>>グレープシティが出しているNetAdvantageのUltraWindTreeに関しての質問です。
>>(3rdパーティだからの問題ではないと思ったのでこちらに書かせて頂いてます)
>
> UltraWindTree? UltraWinTree であれば Grapecity さんではなく Infragistics さんですね。
>
>>UltraWinTree.onMouseDownイベントでGetNodeFromPoint(座標からノードオブジェクトを取得する)を呼び出してクリックされた座標のノードを取得するように組んでいます。
>
> ElementFromPoint メソッドを使用しても区別できないでしょうか?
> カラム ヘッダか Node かの区別はできたハズなので、できそうですが。
解決です。
解決済み!
■No28193に返信(310さんの記事)
> Infragisticsって独立したんですね。
> 独立する前にNetAdvantageをグレープシティから買った覚えがあったので^^;

前身の Sheridan Software Systems 社の時に Grapecity さんが、
販売をしていた (FarPoint 社の Spread と同じで代理販売みたいなもの?)
ようですが、2006 年の暮頃に Infragistics 社へ完全移管したようです。

> 下記の通り見事に回避できました。
> if(UltraWinTree.UIElement.ElementFromPoint(e.Location).GetType()==typeof(Infragistics.Win.WinScrollBar.ScrollThumbUIElement)){
> return;
> }

GetType メソッド + typeof 演算子ではなくて、is 演算子を使うべきだと思います。
解決済み!

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