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

強制的なイベント発生

分類:[.NET]

 VBで操作を行なってイベントを発生させるのではなく、
プログラム内から強制的に設定されているイベントを発生
させることは、出来るのでしょうか?
 よろしくお願いします。
■No1856に返信(タチバナさんの記事)
>  VBで操作を行なってイベントを発生させるのではなく、
> プログラム内から強制的に設定されているイベントを発生
> させることは、出来るのでしょうか?
>  よろしくお願いします。

Win32APIを利用して、強制的にイベントを発生させる事ができますよ。
いろいろなところで、紹介されているからググって見て!
API関数名:PostMessage()
これは、メッセージキューにメッセージをポストする物です
早速の回答有難うございます。
 ネットでAPI関数調べたのですが、うまく見つかりませんでした。
 具体的に、やりたいことをお話しますと、他の関数からスクロールバーの
イベントを起こしたいのですが。
 スクロールバーのVALUを与えてやると、イベントは発生するのですが、既に
持っている同じ値を与えると、イベントを発生させることが出来ません。この
場合にも、強制的にイベントを発生させたいのですが。
 初心者なもので申し訳ありません。
>  ネットでAPI関数調べたのですが、うまく見つかりませんでした。
>  具体的に、やりたいことをお話しますと、他の関数からスクロールバーの
> イベントを起こしたいのですが。

ここまでだけならば、既についている回答の方法でメッセージを
送れば実現可能かもしれません(未検証)が、

>  スクロールバーのVALUを与えてやると、イベントは発生するのですが、既に
> 持っている同じ値を与えると、イベントを発生させることが出来ません。この

ScrollイベントかValueChangedイベントかのどちらかわかりませんが、
それらを発生させたいということですよね?
Valueプロパティにその値と同じ値を与えた場合、
スクロールもしていないし、Valueも変わっていないのですから、
イベントは起きなくて当然ですし、そういうものです。

プログラム的に値を設定しているときの話でしょうから、
そのタイミングで何か処理すればよいだけでは?
2003/12/22(Mon) 03:09:09 編集(投稿者)
2003/12/22(Mon) 03:08:57 編集(投稿者)

■No1880に返信(よねKENさんの記事)
>> ネットでAPI関数調べたのですが、うまく見つかりませんでした。
>> 具体的に、やりたいことをお話しますと、他の関数からスクロールバーの
>>イベントを起こしたいのですが。
>
> ここまでだけならば、既についている回答の方法でメッセージを
> 送れば実現可能かもしれません(未検証)が、
>
>> スクロールバーのVALUを与えてやると、イベントは発生するのですが、既に
>>持っている同じ値を与えると、イベントを発生させることが出来ません。この
>
> ScrollイベントかValueChangedイベントかのどちらかわかりませんが、
> それらを発生させたいということですよね?
> Valueプロパティにその値と同じ値を与えた場合、
> スクロールもしていないし、Valueも変わっていないのですから、
> イベントは起きなくて当然ですし、そういうものです。
>
> プログラム的に値を設定しているときの話でしょうから、
> そのタイミングで何か処理すればよいだけでは?
>

tkymです。
よねKENさんがおっしゃられる通りなのですが、
なんだかの事情があって、どうしてもイベントを発生させたい場合、

ScrollBarクラスを継承して、CustomScrollBarなんぞを作成。
ProtectedメソッドのOnScrollメソッドをCustomScrollBarから呼び出す。

で実現可能です。
■No1880に返信(よねKENさんの記事)
> Valueプロパティにその値と同じ値を与えた場合、
> スクロールもしていないし、Valueも変わっていないのですから、
> イベントは起きなくて当然ですし、そういうものです。
>
> プログラム的に値を設定しているときの話でしょうから、
> そのタイミングで何か処理すればよいだけでは?
>

 ご指摘の通りで、イベント発生時に行なっている処理を関数化することに
より、問題を回避しました。
 いろいろありがとうございました。
解決済み!

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