次の方法で共有


TextDocumentKeyPressEvents インターフェイス

キーを押す処理に関連付けられたイベントを定義します。このオブジェクトを使用して機能を提供します。このオブジェクトのメンバーのドキュメントについては、TextDocumentKeyPressEventsClass のトピックを参照してください。

名前空間:  EnvDTE80
アセンブリ:  EnvDTE80 (EnvDTE80.dll 内)

構文

'宣言
<GuidAttribute("505B7600-8FCC-487C-9E4F-C7FD0B5FB690")> _
Public Interface TextDocumentKeyPressEvents _
    Inherits _TextDocumentKeyPressEvents, _dispTextDocumentKeyPressEvents_Event
[GuidAttribute("505B7600-8FCC-487C-9E4F-C7FD0B5FB690")]
public interface TextDocumentKeyPressEvents : _TextDocumentKeyPressEvents, 
    _dispTextDocumentKeyPressEvents_Event
[GuidAttribute(L"505B7600-8FCC-487C-9E4F-C7FD0B5FB690")]
public interface class TextDocumentKeyPressEvents : _TextDocumentKeyPressEvents, 
    _dispTextDocumentKeyPressEvents_Event
[<GuidAttribute("505B7600-8FCC-487C-9E4F-C7FD0B5FB690")>]
type TextDocumentKeyPressEvents =  
    interface
        interface _TextDocumentKeyPressEvents
        interface _dispTextDocumentKeyPressEvents_Event
    end
public interface TextDocumentKeyPressEvents extends _TextDocumentKeyPressEvents, _dispTextDocumentKeyPressEvents_Event

TextDocumentKeyPressEvents 型で公開されるメンバーは以下のとおりです。

メソッド

  名前 説明
パブリック メソッド add_AfterKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)
パブリック メソッド add_BeforeKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)
パブリック メソッド remove_AfterKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)
パブリック メソッド remove_BeforeKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)

このページのトップへ

イベント

  名前 説明
パブリック イベント AfterKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)
パブリック イベント BeforeKeyPress インフラストラクチャ。マイクロソフト内部でのみ使用します。 (_dispTextDocumentKeyPressEvents_Event から継承されます。)

このページのトップへ

この例では、小さな文字列ディクショナリを作成して BeforeKeyPress イベントに接続することによって、色に関するいくつかの英単語を 16 進表現に自動変換します。Connect.cs ファイル内のコードを次のプログラム例で置き換えます。このアドインを実行し、Visual Studio 統合開発環境 (IDE) でテキスト文書を開きます。テキスト文書では、イベントをキャプチャするメソッドを表示する "赤"、"緑"、"青" の種類によって、テキストがそれぞれ "#ff0000"、"#00cc00"、"#0000ff" に変換されます。オートメーションの例の実行方法の詳細については、「方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する」を参照してください。

namespace myAddin
{
  using System;
  using Microsoft.VisualStudio.CommandBars;
  using Extensibility;
  using EnvDTE;
  using EnvDTE80;
  using System.Windows.Forms;
  public class Connect : Object, IDTExtensibility2
  {
  public Connect()
  {
  }
  public void OnConnection(object application, 
ext_ConnectMode connectMode, object addInInst, ref Array custom)
  {
      _applicationObject = (DTE2)application;
      _addInInstance = (AddIn)addInInst;
      // Create a small string dictionary with keys and corresponding
      // values.
      myStringDictionary = new
 System.Collections.Specialized.StringDictionary();
      myStringDictionary.Add("red", "#ff0000");
      myStringDictionary.Add("green", "#00cc00");
      myStringDictionary.Add("blue", "#0000ff");
      EnvDTE80.Events2 events =
 (EnvDTE80.Events2)_applicationObject.Events;
      textDocKeyEvents =
 (EnvDTE80.TextDocumentKeyPressEvents)
events.get_TextDocumentKeyPressEvents(null);
      // Connect to the BeforeKeyPress delegate exposed from the
      // TextDocumentKeyPressEvents object retrieved above.
      textDocKeyEvents.BeforeKeyPress +=new
 _dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler
(BeforeKeyPress);
  }
  public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom)
  {
      if (textDocKeyEvents != null)
      {
          textDocKeyEvents.BeforeKeyPress -= new 
_dispTextDocumentKeyPressEvents_BeforeKeyPressEventHandler
(BeforeKeyPress);
      }
  }
  public void OnAddInsUpdate(ref Array custom)
  {
  }
  public void OnStartupComplete(ref Array custom)
  {
  }
  public void OnBeginShutdown(ref Array custom)
  {
  }
  void BeforeKeyPress(string Keypress, EnvDTE.TextSelection Selection,
 bool InStatementCompletion, ref bool CancelKeypress)
  {
  if ((Keypress == " ") || (Keypress == "\t"))
      {
          EditPoint ep = Selection.ActivePoint.CreateEditPoint();
          EditPoint sp = ep.CreateEditPoint();
          sp.CharLeft(1);
          while (true)
          {
              string txt = sp.GetText(ep);
              if (myStringDictionary.ContainsKey(txt))
              {
                  sp.Delete(txt.Length);
                  sp.Insert(myStringDictionary[txt]);
                  CancelKeypress = true;
                  return;
              }
          sp.CharLeft(1);
          if ((ep.Line != sp.Line) || ((ep.DisplayColumn == 1) 
&& (ep.Line == 1)))
              break;
          }
       }
  }
  private DTE2 _applicationObject;
  private AddIn _addInInstance;
  private EnvDTE80.TextDocumentKeyPressEvents textDocKeyEvents;
  System.Collections.Specialized.StringDictionary myStringDictionary;
  }
}

参照

関連項目

EnvDTE80 名前空間