コントロールとドキュメントの連携
コントロールからドキュメントへのドラッグ&ドロップ
新規にExcel 2007 ブックプロジェクトを作成し、カスタム作業ウインドウを作成します。カスタム作業ウインドウにラベルを配置し、複数行にまたがるテキストを表示させておきます。
まず、テキストのクリックに対応したイベントハンドラを生成します。具体的には、ラベルのプロパティから、MouseDownイベントに対応するイベントハンドラ名を入力します。
これで、イベントハンドラが生成され、表示されます。
次に、ユーザーコントロールに配置したラベルをドラッグするためのコードを書きます。
追加したコードは以下です。
label1.DoDragDrop(label1.Text, DragDropEffects.Copy);
ビルドして実行すると、カスタム作業ウインドウ上のラベルから、ワークシートへのドラッグ&ドロップが行えます。
ドラッグ&ドロップする文字列を作る際に、セルの区切りを改行とタブで行うことができます。
以下に例を示します。
this.label1.Text = "hoge\thoge\nhoge\thoge\nhoge\thoge";
ドキュメントの変更を捕捉する(Excel編)
新規にExcel 2007 ブックプロジェクトを作成し、カスタム作業ウインドウを作成します。カスタム作業ウインドウにラベルを配置します。
UserControl1.csのコードを開き、ラベルを外部から変更できるようにプロパティを追加します。
追加するコードは以下となります。
public string LabelText { get { return this.label1.Text; } set { this.label1.Text = value; } }
ThisWorkbook.csのコードを開き、ドキュメント変更のイベントハンドラを実装します。
追加するコードは以下となります。
Excel.Worksheet sheet = (Excel.Worksheet)sender; uc.LabelText = ""; foreach (Excel.Range current in range) { uc.LabelText += "[" + current.Row.ToString() + ", " + current.Column.ToString() + "]\n"; uc.LabelText += (IConvertible)current.Text + "\n"; }
次に、イベントハンドラの登録を行います。
追加するコードは以下となります。
this.SheetChange += new Excel.WorkbookEvents_SheetChangeEventHandler( ThisWorkbook_SheetChange);
ビルドして実行すると、カスタム作業ウインドウを含むドキュメントが開きます。
適当なセルに値を入力し、確定すると、カスタム作業ウインドウにその内容が表示されます。
コピー&ペーストで複数のセルを同時に変更した場合は、変更を受けた全てのセルが列挙されます。カット&ペーストの場合は、ペーストされた先のセルのみが表示されます。
ドキュメントの変更を捕捉する(Word編)
新規にWord 2007 ドキュメントプロジェクトを作成し、カスタム作業ウインドウを作成します。カスタム作業ウインドウにラベルを配置します。
UserControl1.csのコードを開き、ラベルを外部から変更できるようにプロパティを追加します。
追加するコードは以下となります。
public string LabelText { get { return this.label1.Text; } set { this.label1.Text = value; } }
ThisDocument.csのコードを開き、選択範囲変更のイベントハンドラを実装します。
追加するコードは以下となります。
private void ThisDocument_SelectionChange(object sender, Microsoft.Office.Tools.Word.SelectionEventArgs e) { Word.Selection sel = e.Selection; if (sel.Start == sel.End) { uc.LabelText = sel.Paragraphs[1].Range.Text; } else { uc.LabelText = "ここに編集内容が表示されます"; } }
次に、イベントハンドラの登録を行います。
追加するコードは以下となります。
this.SelectionChange += new Microsoft.Office.Tools.Word.SelectionEventHandler( ThisDocument_SelectionChange);
ビルドして実行すると、カスタム作業ウインドウを含むドキュメントが開きます。
適当に入力すると、カスタム作業ウインドウに編集中のパラグラフが表示されます。