ツリービューでノードの複数選択ができないので
選択されたノードのアイコンの切替を行い
複数選択されたように見せかけるという処理を行っています。

しかし、
ノードをクリックされた時のみ変更されればよかったのですが、
ダブルクリックでノードを開いた場合、クリック時のイベントが発生し
アイコンが一瞬変更されてしまいます。

今ではクリックされてから一定時間以内にダブルクリックのイベント
が発生しなかった場合のみアイコンを変更していますが、
その場合変更されるまでの反応が遅くなってしまいます。

クリックした時のみアイコンを変更される
よい処理法があったらお教え下さい
宜しくお願いします。

A 回答 (1件)

難しい質問ですね・・・


ダブルクリックとは、必ず一回クリックしてるわけですから、クリックイベントは確実に走ります。
その後にダブルクリックだったと分った場合、それを元に戻せばいいって事ですね。
たとえば、変数を用意して、フラグ管理を行うってのはどうでしょうか。


あと、アイコンでわざわざそういう処理を行うぐらいなら、
ツリービューはチェックボックスが使えるので、.CheckBoxes = True
にしておいて、各ノードの.Checkedプロパティで判定したほうが
楽かと思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qデスクトップのアイコンがなくなった

いつもクイック起動にデスクトップのアイコンがあってたくさんファイルを開けててもデスクトップのアイコンをクリックするとすぐにデスクトップの画面に戻っていたのですが、
この前、デスクトップのアイコンが邪魔だったのでゴミ箱に入れてしまいました。それからというものデスクトップのアイコンが見つかりません。ファイルの検索をして「デスクトップ」って入れても出てきません。デスクトップのアイコンを出すにはどのようにすればいいのでしょうか?
宜しくお願いします。

Aベストアンサー

こちらのFAQが参考になるかも。

できるネット - [クイック起動]にあった[デスクトップの表示]アイコンが消えてしまったが、どうすれば元に戻せるか
http://dekiru.impress.co.jp/faq/win/win001.htm
秘密結社 - 006 クイック起動の「デスクトップの表示」アイコンを削除してしまった場合の復帰方法
http://www.efix.co.jp/sc/himitu/006.htm


> ファイルの検索をして「デスクトップ」って入れても出てきません。

あれ?
サブフォルダを探すのチェックが無かったから失敗…とかなら良いのですが。

参考URL:http://dekiru.impress.co.jp/faq/win/win001.htm, http://www.efix.co.jp/sc/himitu/006.htm

Qツリービューのノードをダブルクリックしたことを判断させるには

 VBにて、ツリービューのノードをダブルクリックしたときにこうする、というような処理をさせるにはそうすればいいんでしょうか。

 TreeView1_NodeClickというのはありますが、ダブルクリックに関してはDblClickだけしか存在せず、どのノードを選択したかを取得できません。

 どなたか、TreeView1_NodeClickのようにノードをダブルクリックした時に限り、そのノードを取得して処理をさせるというような方法を教えてください。

 よろしくお願いします。

Aベストアンサー

Private ClickedNode As MSComctlLib.Node

Private Sub TreeView1_DblClick()
MsgBox ClickedNode.Text + "がダブルクリックされました"
End Sub

Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
Set ClickedNode = Node
End Sub

NodeClickイベントで、クリックされたノードをセットしておき、ダブルクリックイベントでそれを利用するというのはどうでしょう。

QデスクトップにIEのアイコンを表示したい

 XP Home を使用しています.
 デスクトップにIE のアイコンを表示したいのですが,やり方がわかりません.

 デスクトップを右クリック->プロパティ->デスクトップタブ->デスクトップのカスタマイズボタンで表示できると聞いたのですが,その画面からはIE のアイコンを表示できませんでした.

 ショートカットアイコン以外でIE のアイコンをデスクトップに表示する方法はありますでしょうか.

Aベストアンサー

XP SP2の場合
http://pasofaq.jp/windows/desktop/desktopcustomizeieicon.htm

XP SP3の場合
http://pasofaq.jp/windows/desktop/desktopcustomizeieiconsp3.htm

Q「VBでExcel上PictureBoxダブルクリックイベントを取得したい」について

「VBでExcel上PictureBoxダブルクリックイベントを取得したい」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=203163
について思ったことがありまして、ここに書かせていただきます。
この質問にはTodo36さんが答えられました。
Chika-Fさんの望む処理と違うようなので、サブクラス化の案をTodo36さんは述べられて、σ( ̄ー ̄ ボクに託してくださいました。
僕も全く同じ処理を考えていましたのですが、実現不可能でした。
そんな時に出張にいく事になり、結末が気になりながらも、自分なりに考えながら出張にでました。
そこでWith Eventを考えたのですが、エクセルアプリ・ブック・シートなどのイベントは拾えたのですが、シート内に存在するピクチャボックスのエベントは拾う事ができませんでした。
どうしてもエクセルにコードを書かないとできませんでした。

どのようにしたらそのイベントが拾えるのかが極めて知りたいです。
サンプルを載せてくれませんでしょうか?
よろしくお願いします。

「VBでExcel上PictureBoxダブルクリックイベントを取得したい」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=203163
について思ったことがありまして、ここに書かせていただきます。
この質問にはTodo36さんが答えられました。
Chika-Fさんの望む処理と違うようなので、サブクラス化の案をTodo36さんは述べられて、σ( ̄ー ̄ ボクに託してくださいました。
僕も全く同じ処理を考えていましたのですが、実現不可能でした。
そんな時に出張にいく事になり、結末が気になりながらも、自分なりに考えながら出張に...続きを読む

Aベストアンサー

TAGOSAKU7さん、こんにちは。

サンプルをUPします。参考になると良いのですが・・・

私も質問があります。
サンプルREMARK部分でエラーになります。
質問を投稿してありますが良回答を
得られずに困っています。
ご存知でしたら教えて下さい。

【サンプル準備】
標準フォームを1つ作成
同フォームにボタンを2つ作成
TESTという名前でExcelブックを作成
同Excelシートに「Image1」という名前でPictureBox(イメージ)を1つ作成
同ブックをアプリケーションと同フォルダーに保存
参照設定に気を付けて下さい。

【サンプル】
Option Explicit

Private WithEvents XLApp As Excel.Application
Private WithEvents XLBook As Excel.Workbook
Private WithEvents XLSheet As Excel.Worksheet
Private WithEvents XLImage As MSForms.Image
'--------------------------------------------------
'Excel起動
'--------------------------------------------------
Private Sub Command1_Click()

'AppObjectセット
Set XLApp = CreateObject("Excel.Application")
'Excel起動
XLApp.Workbooks.Open FileName:=App.Path & "\TEST.xls"
'WorkBookObjectセット
Set XLBook = XLApp.ActiveWorkbook
'WorkSheetObjectセット
Set XLSheet = XLBook.Sheets(1)
'PictureObjectセット
Set XLImage = XLSheet.OLEObjects("Image1").object
'Excel表示
XLApp.Visible = True
'フォーム非表示(2重起動防止)
Me.Visible = False

End Sub
'--------------------------------------------------
'アプリケーション終了
'--------------------------------------------------
Private Sub Command2_Click()

Unload Me
End

End Sub
'--------------------------------------------------
'ExcelBookクローズ時処理
'--------------------------------------------------
Private Sub XLApp_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)

'終了時に保存メッセージを表示させない
XLApp.DisplayAlerts = False
'ExcelApp終了
XLApp.Quit
'変数解放
Set XLImage = Nothing
Set XLSheet = Nothing
Set XLBook = Nothing
Set XLApp = Nothing
'フォーム表示
Me.Visible = True

End Sub
'--------------------------------------------------
'ExcelImageダブルクリック時処理
'--------------------------------------------------
Private Sub XLImage_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim OpenRet As Variant
'確認メッセージ
XLApp.Visible = False
MsgBox ("Get PictureBox Event")
XLApp.Visible = True

'-----------------------------------------------------------
'---私も質問したい箇所です。最初はREM(')して下さい
'--.Pictureでオートメーションエラーが出ます。
'--解決法がありましたら教えて下さい。
' OpenRet = Application.GetOpenFilename _
' ("BMP,*.BMP,JPEG,*.JPG,GIF,*.GIF", , "画像選択")
' If OpenRet = False Then Exit Sub
' With XLImage
' .AutoLoad = True
' .AutoSize = False
' .PictureSizeMode = fmPictureSizeModeZoom
' .PictureAlignment = fmPictureAlignmentCenter
' .Picture = LoadPicture(OpenRet)
' End With
' SavePicture XLImage.Picture, App.Path & "\TmpPict.JPg"
'-----------------------------------------------------------

End Sub

TAGOSAKU7さん、こんにちは。

サンプルをUPします。参考になると良いのですが・・・

私も質問があります。
サンプルREMARK部分でエラーになります。
質問を投稿してありますが良回答を
得られずに困っています。
ご存知でしたら教えて下さい。

【サンプル準備】
標準フォームを1つ作成
同フォームにボタンを2つ作成
TESTという名前でExcelブックを作成
同Excelシートに「Image1」という名前でPictureBox(イメージ)を1つ作成
同ブックをアプリケーションと同フォルダーに保存
参照設定に...続きを読む

Qデスクトップのマイコンピュータのアイコンが・・・

デスクトップのマイコンピュータの

アイコンはデスクトップ上になくても

不便さはないかな?と

デスクトップのアイコンを少しでも少なくしたい

気持ちを優先し、デスクトップ上から削除しました。

ところが、もと通りにデスクトップ上に、

マイコンピュータのアイコンを表示させる方法が

わからず、ご教授願います。

【一度、削除したデスクトップ上のマイコンピュータの

アイコンを再表示させる方法を教えてくださいませ。】

Aベストアンサー

ディスクトップ画面→右クリック→プロパティ→ディスクトップ→全般のディスクトップアイコンをチェックしては如何でしょうか。

QVB.NETでマウスクリックイベントを発生させたい。

VB.NETでformの外で任意の座標でマウスクリックイベントを発生させたい。
formにはボタンがあり、そのボタンを押すを固定位置(formの外)でマウスの左クリックイベントを発生させたいのですがどのような手段を使えばいいでしょうか。

環境 Windows XP,VB2008 Exoress

Aベストアンサー

こちらの記事がわかりやすくていいんじゃないかなー。
http://blog.livedoor.jp/akf0/archives/51560984.html

QiPhone6 アイコンをデスクトップに表示してますが、子供が勝手にアマゾンのアイコンを消してし

iPhone6


アイコンをデスクトップに表示してますが、子供が勝手にアマゾンのアイコンを消してしまい、デスクトップから消えました。
再ダウンロードしようとしたら、ダウンロードがでずに、開く、しかないので、デスクトップ上のアイコンがなくなってるだけのようです。デスクトップにアイコンを再表示させる方法を教えて下さい。
一応、全部見たんですが、デスクトップにアイコンないです。

Aベストアンサー

失礼しました!デスクトップと書いてあったので
パソコンだと思って勘違いしました!
iphoneのホーム画面のことですね!
iphoneをホーム画面にして左にフリックすると
一番上に検索画面がでますので『Amazon』と
入力してください。
Amazonのアプリが出てきたと思います。
そのアイコンの右側にどこに入ってるか
表示されますのでそこからデスクトップに
置いてあげてください。

Qリストボックスの複数選択時のダブルクリックについて

リストボックスをMultiExtendedで設定してあり、
複数を選択した状態でその選択されているどれかのアイテムを
ダブルクリックすると選択されている全てのアイテム(番号)を
取得したいのですが、どのようにしたらできるでしょうか。

ListBox1_SelectedIndexChangedで複数選択アイテム番号を記憶させて
次にダブルクリックした際に、そのアイテム番号が記録の中の番号に
含まれていれば、記録してある番号のアイテムを全部取得して、
その後で、その記録されていた番号のアイテムを全部選択状態に
設定すればダブルクリックしたように見えると思ったのですが、
ダブルクリックの一回目のクリックでListBox1_SelectedIndexChanged
イベントが
発生してしまい、複数選択の記録が消えてしまいます。
フラグを立てたりと色々試しているのですが、どうもうまく動作してくれません。

良い方法やヒントがありましたら、ご教授頂けると幸いです。

VB.NET2003、Framework1.1環境です。

リストボックスをMultiExtendedで設定してあり、
複数を選択した状態でその選択されているどれかのアイテムを
ダブルクリックすると選択されている全てのアイテム(番号)を
取得したいのですが、どのようにしたらできるでしょうか。

ListBox1_SelectedIndexChangedで複数選択アイテム番号を記憶させて
次にダブルクリックした際に、そのアイテム番号が記録の中の番号に
含まれていれば、記録してある番号のアイテムを全部取得して、
その後で、その記録されていた番号のアイテムを全部選択状態に
設定...続きを読む

Aベストアンサー

参考までに、

(1)選択アイテム番号の取得をクリックイベントで行い配列に格納。ダブルクリックイベントで処理する。

(2)リストボックス→チェックドリストボックスに変更する。

QiPhone6を使ってます。 アイコンをデスクトップに表示してますが、子供が勝手にアマゾンのアイコン

iPhone6を使ってます。
アイコンをデスクトップに表示してますが、子供が勝手にアマゾンのアイコンを消してしまい、デスクトップから消えました。
再ダウンロードしようとしたら、ダウンロードがでずに、開く、しかないので、デスクトップ上のアイコンがなくなってるだけのようです。デスクトップにアイコンを再表示させる方法を教えて下さい。
一応、全部見たんですが、デスクトップにアイコンないです。

Aベストアンサー

Amazonアプリのアイコンが表示されないということでしょうか?
◆Amazonアプリ
https://itunes.apple.com/jp/app/amazon-apuri/id374254473?mt=8

原因は分かりませんが、稀にホーム画面上にアイコンが表示されなくなることがあります。
その場合、App Storeを見てもアプリをアンインストールしている状態になければ、「開く」という表示になっています。
一旦アンインストールをしてから再インストールをして方がいいかもしれません。
設定よりアプリのアンインストールが行えますので、以下の通りたどって、アンインストールを行ってみてください。

設定>一般>ストレージとiCloudの使用状況>ストレージ:ストレージを管理
>アプリの一覧が表示されますので「Amazon アプリ」開く>Appを削除

これでアンインストールを行えます。
再度、iTunes StoreからAmazon アプリをインストールしてみてください。

Qダブルクリックイベントで良いのかどうか?

お世話になります。
ダブルクリックイベントで、そのセルを赤く色を塗り、尚且つ、
そのセルをダブルクリックした事により、別のワークブックを開き、
また、開いたワークブックのシートの中からある単語を検索して
その属性を現在アクティブにしている、ブックのシートに記入しよう
としていますが、
まず、下記の様に、ダブルクリックイベントで、セルを赤く塗るまではうまくいったのですが、別のブックを開く事がうまく出来ません。
記述が悪いのか、または標準モジュールに記述するべきなのか分からなく困っています。
どなたかご教授頂きたく宜しくお願い申し上げます。

       記

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim Rng As Range, myRng As Range
Set Rng = Range("c2:d2,f2")
Set myRng = Intersect(Target, Rng)
If myRng Is Nothing Then Exit Sub
Rng.Interior.ColorIndex = xlColorIndexNone
myRng.Interior.ColorIndex = 3
Cancel = True

If Intersect(Target, Range("c2")) Then
Workbooks.Open Filename:="C:\Documents and Settings\Owner\デスクトップ\台帳.xls"

End If



End Sub

お世話になります。
ダブルクリックイベントで、そのセルを赤く色を塗り、尚且つ、
そのセルをダブルクリックした事により、別のワークブックを開き、
また、開いたワークブックのシートの中からある単語を検索して
その属性を現在アクティブにしている、ブックのシートに記入しよう
としていますが、
まず、下記の様に、ダブルクリックイベントで、セルを赤く塗るまではうまくいったのですが、別のブックを開く事がうまく出来ません。
記述が悪いのか、または標準モジュールに記述するべきなのか分からな...続きを読む

Aベストアンサー

If Intersect(Target, Range("c2")) Then
ここを
If Not Intersect(Target, Range("c2")) Is Nothing Then
だとどうでしょう?


人気Q&Aランキング

おすすめ情報