方法 : [ダイナミック ヘルプ] ウィンドウを制御する
更新 : 2007 年 11 月
Visual Studio には、[ダイナミック ヘルプ] ウィンドウがあり、ユーザーのコンテキストに基づいて、関連するヘルプ トピックへのリンクが表示されます。たとえば、コード エディタで編集を開始すると、コード エディタの使用方法に関するトピックが [ダイナミック ヘルプ] ウィンドウに表示されます。トピックの表示は、現在のコンテキストに関連するキーワードと、ヘルプ トピックに関連付けられたキーワードの一覧との比較によって行われます。
ContextAttributes コレクションおよび ContextAttribute オブジェクトを使用すると、Visual Studio 内の指定したウィンドウに当てはまるキーワードのコレクションの一覧を表示できます。また、属性を追加して優先順位を付けることもできます。この結果、オートメーション クライアントは、[ダイナミック ヘルプ] ウィンドウまたはそのウィンドウの要素 (タブやリンクなど) が選択された場合に、選択したトピックを [ダイナミック ヘルプ] ウィンドウに表示できます。
ContextAttribute オブジェクトは、特定のウィンドウまたはウィンドウ要素のコンテキストを表します。ContextAttributes は、指定されたウィンドウのすべての ContextAttribute オブジェクトのコレクションです。コンテキストには、Filter、Lookup、および LookupF1 の 3 種類があります。
Filter |
属性がコンテキストのコレクションに追加されます。属性は、名前/値ペアで、[ダイナミック ヘルプ] ウィンドウに表示される F1 および検索キーワードのトピックをフィルタ処理したり、F1 キーを押したときに表示されるトピックをフィルタ処理したりする場合に使用します。 |
Lookup |
キーワードがコンテキストのコレクションに追加されます。このキーワードに対応したトピックが [ダイナミック ヘルプ] ウィンドウに表示されます。検索キーワードには、[ダイナミック ヘルプ] ウィンドウに表示されるバックグラウンドや関連トピックの一覧が用意されています。[ダイナミック ヘルプ] ウィンドウに表示されるキーワード トピックの一覧は、現在の選択内容が変更されると更新されます。検索キーワードは、コンパイル済みのヘルプ ファイルのインデックスに表示されるキーワードと同じソースから派生しています。 |
LookupF1 |
このキーワードに対応するトピックが [ダイナミック ヘルプ] ウィンドウに表示されます。このトピックは、F1 ヘルプ トピックを検索する場合に使用されます。F1 キーワードには、ヘルプ トピックが用意されています。このヘルプ トピックは、ツール ウィンドウ、エディタ、モーダル ダイアログ ボックスなどのコンテキスト要素が選択された状態で、F1 キーが押された場合に表示されます。F1 キーワード トピックも [ダイナミック ヘルプ] ウィンドウに表示されます。F1 キーワードがコンテキストのコレクションに追加されます。 |
ContextAttributes オブジェクトの基になるコンテキスト属性には、次の 3 種類があります。
Global |
グローバルな統合開発環境 (IDE: Integrated Development Environment) のコンテキスト。 |
High Priority |
High Priority コンテキストのコレクション。High Priority コンテキスト属性は、トピックへのリンクが [ダイナミック ヘルプ] ウィンドウ内のリンク グループの上部に表示されることを示します。 |
Window |
ウィンドウ コンテキスト。 |
ContextAttributes コレクションは、次のオブジェクトから利用できます。
グローバル コンテキスト コレクションに影響します。トピックの並べ替えでは、優先順位が最も低くなります。 |
|
ウィンドウのコンテキスト コレクションに影響します。ツール ウィンドウの場合、各属性は、ウィンドウが選択されたときだけ有効です。エディタとデザイナの場合、各属性は、エディタが最後にアクティブな MDI 子ウィンドウである限り有効です。HighPriorityAttributes プロパティの値が True の場合、各属性は常に有効で、優先順位が最も高くなります。 |
キーワードをウィンドウまたはウィンドウ要素に関連付けた後、キーワードを使用してヘルプ トピックを表示できます。XML ヘルプ プロバイダを使用すると、カスタム ヘルプ トピックまたは URL を表示できます。詳細については、Visual Studio Industry Partner (VSIP) SDK ヘルプで "The XML Help Provider and Dynamic Help" を検索してください。
[ダイナミック ヘルプ] ウィンドウの内容を制御するだけでなく、幅や高さなど、ウィンドウの特性も制御できます。詳細については、「方法 : ウィンドウの特性を変更する」を参照してください。
ContextAttributes および ContextAttribute を使用して、次の操作を実行できます。
キーワードの名前、値、および種類を追加または削除します。
キーワードの名前と値を取得します。
High Priority 属性の一覧を ContextAttributes コレクションとして DTE.ContextAttributes から取得します。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。ここに記載されている手順は、全般的な開発設定が適用されているものとして記述されています。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
使用例
このアドインの例では、[ダイナミック ヘルプ] オートメーション モデルのさまざまなメンバを参照および使用する方法を示します。この例では、ソリューション エクスプローラに関連付けられたキーワードの名前と数の一覧を表示します。また、新しい F1 キーワードを追加し、その後、削除します。この例をアドインまたは Visual Studio マクロとして実行する方法の詳細については、「方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する」を参照してください。
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
' Pass the applicationObject member variable to the code example.
CATest(_applicationObject)
End Sub
Sub CATest(ByVal dte As DTE2)
' Get a reference to Solution Explorer.
Dim SolnEx As Window = _applicationObject.Windows.Item(Constants. _
vsWindowKindSolutionExplorer)
Dim CA As ContextAttribute
' List the current attributes associated with Solution Explorer.
ListAttr(SolnEx, CA)
' Associate a new F1 keyword to Solution Explorer.
SolnEx.ContextAttributes.Add("ANewKeyword", "900", _
vsContextAttributeType.vsContextAttributeLookupF1)
ListAttr(SolnEx, CA)
' Delete the new F1 keyword from Solution Explorer.
SolnEx.ContextAttributes.Item(3).Remove()
ListAttr(SolnEx, CA)
End Sub
Sub ListAttr(ByVal SolnEx As Object, ByVal CA As ContextAttribute)
' Support function for CATest(). Lists the current attributes
' associated with Solution Explorer.
Dim msg As String
msg = ""
MsgBox("Number of context attributes in Solution Explorer: " _
& SolnEx.ContextAttributes.Count)
For Each CA In SolnEx.ContextAttributes
msg = msg & CA.Name & Chr(13)
Next
MsgBox(msg)
msg = ""
End Sub
public void OnConnection(object application,
Extensibility.ext_ConnectMode connectMode, object addInInst, ref
System.Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// Pass the applicationObject member variable to the code example.
CATest(_applicationObject);
}
public void CATest( DTE2 dte )
{
// Add-in code.
// Get a reference to Solution Explorer.
Window SolnEx = dte.Windows.Item
( Constants.vsWindowKindSolutionExplorer );
ContextAttribute CA = null;
// List the current attributes associated with Solution Explorer.
ListAttr( SolnEx, CA );
// Associate a new F1 keyword to Solution Explorer.
SolnEx.ContextAttributes.Add( "ANewKeyword",
System.Convert.ToString(900),
vsContextAttributeType.vsContextAttributeLookupF1 );
ListAttr( SolnEx, CA );
// Delete the new F1 keyword from Solution Explorer.
SolnEx.ContextAttributes.Item( 2 ).Remove();
ListAttr( SolnEx, CA );
}
public void ListAttr( EnvDTE.Window SolnEx, ContextAttribute CA )
{
// Support function for CATest(). Lists the current attributes
// associated with Solution Explorer.
string msg = null;
MessageBox.Show
( "Number of context attributes in Solution Explorer: "
+ SolnEx.ContextAttributes.Count);
foreach ( EnvDTE.ContextAttribute temp in
SolnEx.ContextAttributes )
{
CA = temp;
msg = msg + CA.Name + "\n";
}
MessageBox.Show( msg);
msg = "";
}