トップ回答者
検索ダイアログの「上へ検索」に勝手にチェックがつくのはなぜ?

質問
回答
-
マクロのMyMacrosのEnvironmentEventsに以下のコードを貼り付けて再起動
Option Strict Off Option Explicit Off Imports EnvDTE Imports System.Diagnostics Public Module EnvironmentEvents #Region "Automatically generated code, do not modify" 'Automatically generated code, do not modify 'Event Sources Begin <System.ContextStaticAttribute()> Public WithEvents DTEEvents As EnvDTE.DTEEvents <System.ContextStaticAttribute()> Public WithEvents DocumentEvents As EnvDTE.DocumentEvents <System.ContextStaticAttribute()> Public WithEvents WindowEvents As EnvDTE.WindowEvents <System.ContextStaticAttribute()> Public WithEvents TaskListEvents As EnvDTE.TaskListEvents <System.ContextStaticAttribute()> Public WithEvents FindEvents As EnvDTE.FindEvents <System.ContextStaticAttribute()> Public WithEvents OutputWindowEvents As EnvDTE.OutputWindowEvents <System.ContextStaticAttribute()> Public WithEvents SelectionEvents As EnvDTE.SelectionEvents <System.ContextStaticAttribute()> Public WithEvents BuildEvents As EnvDTE.BuildEvents <System.ContextStaticAttribute()> Public WithEvents SolutionEvents As EnvDTE.SolutionEvents <System.ContextStaticAttribute()> Public WithEvents SolutionItemsEvents As EnvDTE.ProjectItemsEvents <System.ContextStaticAttribute()> Public WithEvents MiscFilesEvents As EnvDTE.ProjectItemsEvents <System.ContextStaticAttribute()> Public WithEvents DebuggerEvents As EnvDTE.DebuggerEvents <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents 'Event Sources End 'End of automatically generated code #End Region Private Sub DTEEvents_OnStartupComplete() Handles DTEEvents.OnStartupComplete CommandEvents = DTE.Events.CommandEvents End Sub Private Sub CommandEvents_BeforeExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut As Object, ByRef CancelDefault As Boolean) Handles CommandEvents.BeforeExecute If (ID = 97) Then If (DTE.Find.Backwards) Then DTE.Find.Backwards = False End If End If End Sub End Module
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
すべての返信
-
Visual Studioのバージョンはいくつでしょうか?
Visual Studio 2012から規定では「上へ検索」チェックボックスはなくなり、
スプリットボタンのようなUIに変わっておりました。Visual Studio 2010で動作を確認したところ、「上へ検索」のチェック状態は
前回「次を検索」で検索したときの状態を覚えているようです。一度「上へ検索」チェックを外した状態で「次を検索」で検索をかけると元に戻ると思うのですがいかがでしょうか?
個人的には、検索ボックスにサーチする文字列を入れ、F3を押すと下方向の検索、Shift+F3を押すと上方向の検索ができるので使っています。(「上へ検索」チェックボックスの状態によらない)
- 編集済み kenjinoteMVP 2016年8月30日 6:32
-
ご返信ありがとうございます。
Visual Studio 2003ですね。すみません。こちらの環境には Visual Studio 2008 からしか入っていないため確認ができていませんが、少なくとも Visual Studio 2008 では「上へ検索」のチェック状態を覚えないようにする設定は無いようでした。
F3、Shift+F3 は 検索ボックスだけでなく、検索ダイアログを開いた状態(検索後は閉じた状態)でも使用できると思いますがいかがでしょうか?(すみませんこちらも Visual Studio 2008 での確認です)
- 編集済み kenjinoteMVP 2016年8月30日 9:30
-
マクロのMyMacrosのEnvironmentEventsに以下のコードを貼り付けて再起動
Option Strict Off Option Explicit Off Imports EnvDTE Imports System.Diagnostics Public Module EnvironmentEvents #Region "Automatically generated code, do not modify" 'Automatically generated code, do not modify 'Event Sources Begin <System.ContextStaticAttribute()> Public WithEvents DTEEvents As EnvDTE.DTEEvents <System.ContextStaticAttribute()> Public WithEvents DocumentEvents As EnvDTE.DocumentEvents <System.ContextStaticAttribute()> Public WithEvents WindowEvents As EnvDTE.WindowEvents <System.ContextStaticAttribute()> Public WithEvents TaskListEvents As EnvDTE.TaskListEvents <System.ContextStaticAttribute()> Public WithEvents FindEvents As EnvDTE.FindEvents <System.ContextStaticAttribute()> Public WithEvents OutputWindowEvents As EnvDTE.OutputWindowEvents <System.ContextStaticAttribute()> Public WithEvents SelectionEvents As EnvDTE.SelectionEvents <System.ContextStaticAttribute()> Public WithEvents BuildEvents As EnvDTE.BuildEvents <System.ContextStaticAttribute()> Public WithEvents SolutionEvents As EnvDTE.SolutionEvents <System.ContextStaticAttribute()> Public WithEvents SolutionItemsEvents As EnvDTE.ProjectItemsEvents <System.ContextStaticAttribute()> Public WithEvents MiscFilesEvents As EnvDTE.ProjectItemsEvents <System.ContextStaticAttribute()> Public WithEvents DebuggerEvents As EnvDTE.DebuggerEvents <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents 'Event Sources End 'End of automatically generated code #End Region Private Sub DTEEvents_OnStartupComplete() Handles DTEEvents.OnStartupComplete CommandEvents = DTE.Events.CommandEvents End Sub Private Sub CommandEvents_BeforeExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut As Object, ByRef CancelDefault As Boolean) Handles CommandEvents.BeforeExecute If (ID = 97) Then If (DTE.Find.Backwards) Then DTE.Find.Backwards = False End If End If End Sub End Module
個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
-
gekkaさん、ありがとうございます!どうやらうまく行きました。
ずっと不便だな~と思いながら使い続けてたので、これでだいぶマシになりました。それにしても、なぜマイクロソフトがそういう仕様にしたのか、わかりました。
「大文字と小文字の区別」や「単語単位」は、前回のチェックボックスの状態を引き継ぐ。
その考えに倣って、検索方向も前回の方向を引き継ぐようにしたわけか。しかしそれなら、チェックボックスの状態を引き継ぐべきであって、F3・Shift+F3の方向を引き継ぐのは、ユーザーの使い勝手にそぐわない仕様だと思います。
チェックボックスの状態は、「ユーザーが普段どういう使い方をしたいか?」という意図が反映される。いや、されやすい。
一方、F3・Shift+F3の検索方向は、コロコロ変わる。次へ検索したり上へ検索したり、頻繁に替わる。そういった意味では、サイコロの目に近い。
そこには「ユーザーが普段どういう使い方をしたいか?」という意図が反映されない。「デフォルト値として何が最適か?」という問題ですよ、これは。
「ユーザーが普段検索したい方向」にすべきであって、「サイコロの目のように頻繁に替わる方向」は、デフォルト値としてはふさわしくないと思います。
これはマイクロソフトさんの設計ミスですね。できれば改良していただきたいものです。ちなみに、F3・Shift+F3は、検索ダイアログを閉じた状態でやりたいんです。
検索ダイアログ表示中は、Enterキーで検索したいんです。