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

ToolStripのちらつき解消方法を教えて下さい。

環境/言語:[XP/VB2005]
分類:[.NET]

はじめまして。
VB2005にてWindowsアプリケーションを作成してるのですが行き詰っており、投稿させて頂きました。
現在、Form1にToolStripPanel1をDock:Topで配置し、その中にToolStrip1を配置し、ToolStrip1にはToolStripButton1とToolStripButton2とToolStripTextBox1を作成しています。
(ここからが投稿内容です。)
ToolStripButton1とToolStripButton2のMouseEnterとMouseLeaveイベントでボタン自体のImageを変更するプログラム作成したのですが、いざプログラムを実行すると…ボタン自体のImageは変更するのですが、同時にToolStrip1自体?がちらついてしまって、どうしようもありません。
何かこのちらつきを解消する方法をご存知の方、またはヒントなどご存知の方、お教え頂ければ幸いです。

追伸、VB2005を使用し始めたばかりで、またここに投稿させて頂くのも初めてと…何か不備などありましたら、ご了承下さい。
宜しくお願い致します。
FormのDoubleBufferd をtrueにしてみては.
■No24151に返信(ykさんの記事)
> FormのDoubleBufferd をtrueにしてみては.
>
yk様。
早々のアドバイス有難うございます。
早速、FormのDoubleBufferd をtrueに設定して試してみましたが、
ToolStrip1のちらつきは改善しませんでした。
VS2008で試してみましたが、ちらつきませんでした。どのようなコードでちらつきが起こるのか教えていただければ試してみたいと思いますが、可能でしょうか?
■No24162に返信(管理人さんの記事)
> VS2008で試してみましたが、ちらつきませんでした。どのようなコードでちらつきが起こるのか教えていただければ試してみたいと思いますが、可能でしょうか?

管理人様。
ご返信有難うございます。
私の環境はXPでVB2005です。
現在のForm1の状態は…(すごく単純なのですが。)

Windowsのフォームデザイナで…
[Form1]に[ToolStripPanel1]をDock:Topで配置しています。
[ToolStripPanel1]に[ToolStrip1]を配置しています。
[ToolStrip1]に[ToolStripLabel1]と[ToolStripButton1]と[ToolStripButton2]と[ToolStripTextBox1]を配置しています。

コードにて…
Private Sub ToolStripButton1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseEnter
ToolStripButton1.Image = ImageList1.Images(1)
End Sub
Private Sub ToolStripButton1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseLeave
ToolStripButton1.Image = ImageList1.Images(0)
End Sub
Private Sub ToolStripButton2_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.MouseEnter
ToolStripButton2.Image = ImageList1.Images(1)
End Sub
Private Sub ToolStripButton2_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.MouseLeave
ToolStripButton2.Image = ImageList1.Images(0)
End Sub
以上のコードを作成して、ポインタがToolStripButtonの上に来た時にToolStripButtonのImageが変化するようにしました。
このコードを実行すると…
ポインタがToolStripButtonの上を通過するとImageは意図した通りに変化するのですが、同時にToolStripLabelとToolStripTextBoxとToolStrip自体の右端?がちらついてしまいます。(早めに動かすとひどい状態になってしいます。)

※ToolStripをFormに直接配置した場合(ToolStripがFormWidth分広がった状態)は、ToolStrip自体の右端はちらつきませんが、ToolStripLabelとToolStripTextBoxはちらついてしまいます。

以上が現在の現象なのですが、管理人様にうまく伝わりましたでしょうか。。。
また、vs2005とvs2008の違いなのでしょうか。
大変恐縮なのですが、何か改善点やヒントなどございましたらご教授下さい。
■No24164に返信(だんごさんの記事)
> ■No24162に返信(管理人さんの記事)
>>VS2008で試してみましたが、ちらつきませんでした。どのようなコードでちらつきが起こるのか教えていただければ試してみたいと思いますが、可能でしょうか?
>
> 管理人様。
> ご返信有難うございます。
> 私の環境はXPでVB2005です。
> 現在のForm1の状態は…(すごく単純なのですが。)
>
> Windowsのフォームデザイナで…
> [Form1]に[ToolStripPanel1]をDock:Topで配置しています。
> [ToolStripPanel1]に[ToolStrip1]を配置しています。
> [ToolStrip1]に[ToolStripLabel1]と[ToolStripButton1]と[ToolStripButton2]と[ToolStripTextBox1]を配置しています。
>
> コードにて…
> Private Sub ToolStripButton1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseEnter
> ToolStripButton1.Image = ImageList1.Images(1)
> End Sub
> Private Sub ToolStripButton1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton1.MouseLeave
> ToolStripButton1.Image = ImageList1.Images(0)
> End Sub
> Private Sub ToolStripButton2_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.MouseEnter
> ToolStripButton2.Image = ImageList1.Images(1)
> End Sub
> Private Sub ToolStripButton2_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripButton2.MouseLeave
> ToolStripButton2.Image = ImageList1.Images(0)
> End Sub
> 以上のコードを作成して、ポインタがToolStripButtonの上に来た時にToolStripButtonのImageが変化するようにしました。
> このコードを実行すると…
> ポインタがToolStripButtonの上を通過するとImageは意図した通りに変化するのですが、同時にToolStripLabelとToolStripTextBoxとToolStrip自体の右端?がちらついてしまいます。(早めに動かすとひどい状態になってしいます。)
>
> ※ToolStripをFormに直接配置した場合(ToolStripがFormWidth分広がった状態)は、ToolStrip自体の右端はちらつきませんが、ToolStripLabelとToolStripTextBoxはちらついてしまいます。
>
> 以上が現在の現象なのですが、管理人様にうまく伝わりましたでしょうか。。。
> また、vs2005とvs2008の違いなのでしょうか。
> 大変恐縮なのですが、何か改善点やヒントなどございましたらご教授下さい。

管理人様。yk様。
大変お騒がせしました。
ToolStrip1のAutoSize=Falseに設定し、Widthを設定したところちらつきが解消しました。
いろいろと…アドバイスを頂き誠にありがとうございました。
解決済み!

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