ListObject コントロール
更新 : 2008 年 7 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 ドキュメント レベルのプロジェクト
アプリケーション レベルのプロジェクト
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
ListObject コントロールは、イベントを公開し、データにバインドできるリストです。リストをワークシートに追加すると、Visual Studio Tools for Office によって ListObject コントロールが作成されます。このコントロールは、Microsoft Office Excel オブジェクト モデルを走査しなくても、コードで直接使用できます。
コントロールの作成
ListObject コントロールは、デザイン時または実行時にドキュメント レベルのカスタマイズの Microsoft Office Excel ワークシートに追加できます。Visual Studio 2008 Service Pack 1 (SP1) では、アプリケーション レベルのアドインで実行時に ListObject コントロールを追加できるようになりました。詳細については、「方法 : ワークシートに ListObject コントロールを追加する」を参照してください。
メモ : |
---|
既定では、動的に作成されたリスト オブジェクトは、ワークシートを閉じるときに、ホスト コントロールとしてワークシートに保持されません。詳細については、「実行時の Office ドキュメントへのコントロールの追加」を参照してください。 |
コントロールへのデータの連結
ListObject コントロールは、単純データ バインディングおよび複合データ バインディングをサポートします。ListObject コントロールは、デザイン時には DataSource プロパティおよび DataMember プロパティを使用して、また、実行時には SetDataBinding メソッドを使用して、データ ソースにバインドできます。
メモ : |
---|
ListObject は、DataTable など、データ変更時にイベントを発生させるデータ ソースにバインドされると、自動的に更新されます。データ変更時にイベントを発生させないデータ ソースに ListObject をバインドする場合は、RefreshDataRow メソッドまたは RefreshDataRows メソッドを呼び出し、ListObject を更新する必要があります。 |
ワークシートのセルに繰り返しスキーマ要素を割り当てることで、そのセルに ListObject を追加すると、Visual Studio Tools for Office によって、生成されたデータセットに ListObject が自動的に割り当てられます。ただし、ListObject は、自動的にデータにバインドされません。ドキュメント レベルのプロジェクトでは、デザイン時または実行時にデータセットに ListObject をバインドする手順を実行できます。SP1 以降、アプリケーション レベルのアドインで実行時にプログラムによってデータセットに ListObject をバインドできるようになりました。
データは ListObject から切り離されているため、ListObject を通じて直接ではなく、バインドされているデータセットを通じてデータを追加および削除する必要があります。バインドされたデータセット内のデータがなんらかの機構を通じて更新された場合、ListObject コントロールはその変更を自動的に反映します。詳細については、「コントロールへのデータのバインド」を参照してください。
ListObject をデータ ソースにバインドすると、すぐに ListObject コントロールにデータを読み込むことができます。データ バインドされた ListObject でデータを編集すると、データ ソースも自動的に変更されます。ListObject にデータを読み込んだ後、ユーザーがデータ ソースを変更せずに ListObject 内のデータを変更できるようにする場合は、Disconnect メソッドを使用して、データ ソースから ListObject を分離できます。詳細については、「方法 : ListObject コントロールにデータを読み込む」を参照してください。
メモ : |
---|
オーバーラップしている ListObject コントロール上では、データ バインディングはサポートされません。 |
ListObject コントロールのパフォーマンスの向上
XML ファイルをデータ バインド ListObject コントロールに読み込む場合に、先にコントロールをバインドし、次に ReadXml を呼び出してデータセットに読み込むと、処理速度が低下する傾向があります。パフォーマンスを向上させるには、コントロールをバインドする前に ReadXml を呼び出します。
ListObject コントロールのデータ ソースからの接続の解除
ListObject コントロールをデータ ソースにバインドしてデータをそのコントロールに読み込んだ後、リスト オブジェクトのデータを変更してもデータ ソースに影響しないように、データ ソースへの接続を解除できます。詳細については、「方法 : ListObject コントロールにデータを読み込む」を参照してください。
書式設定
Microsoft.Office.Interop.Excel.ListObject に適用できる書式設定は、Microsoft.Office.Tools.Excel.ListObject コントロールにも適用できます。これには、罫線、フォント、数値の形式、およびスタイルが含まれます。エンド ユーザーは、ListObject データ バインド内の列を再配置できます。ListObject をデザイン時に文書に追加している場合は、その変更は文書と共に保持されます。次に文書を開いた場合、リスト オブジェクトは同じデータ ソースにバインドされますが、列の順序はユーザーの変更を反映します。
実行時の列の追加および削除
実行時に、ListObject データ バインド コントロール内の列を手動で追加または削除することはできません。エンド ユーザーが列を削除しても列は直ちに復元され、追加した列は削除されます。このため、データにバインドされている ListObject でこれらの操作を実行できない理由をユーザーに説明するコードを記述することが重要です。Visual Studio Tools for Office には、データ バインディングに関連する ListObject のイベントが用意されています。たとえば、OriginalDataRestored イベントを使用して、削除しようとしたデータは削除できず、復元されたことをユーザーに警告できます。
実行時の行の追加および削除
データ ソースへ新しい行を追加でき、データ ソースが読み取り専用でない場合、ListObject データ バインド コントロールに手動で行を追加したり削除したりできます。データを検証する BeforeAddDataBoundRow、エラーが訂正された後に再試行する ErrorAddDataBoundRow など、イベントに対するコードを記述できます。
詳細については、「方法 : ListObject コントロールに新規行が追加された場合にデータを検証する」および「方法 : ListObject コントロールに新規行が追加された場合にエラーを処理する」を参照してください。
Excel 2007 の ListObject コントロールの名前の変更
Excel 2007 では [デザイン] タブを使用して実行時に Excel テーブルの名前を変更できます。ただし、この機能は ListObject コントロールではサポートされていません。ListObject に対応する Excel テーブルの名前を変更しようとすると、ブックを保存するときに Excel テーブルの名前は自動的に元の名前に戻ります。
メモ : |
---|
Excel リストは、Excel 2007 では Excel テーブルと呼ばれます。 |
イベント
次のイベントは ListObject コントロールで使用できます。
参照
処理手順
方法 : ワークシートに ListObject コントロールを追加する
方法 : ListObject コントロールのサイズを変更する
方法 : ListObject コントロールに新規行が追加された場合にデータを検証する
方法 : ListObject コントロールに新規行が追加された場合にエラーを処理する
方法 : ListObject コントロールにデータを読み込む
概念
アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張
ホスト項目およびホスト コントロールのプログラム上の制限事項
その他の技術情報
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2008 年 7 月 |
アプリケーション レベルのアドインでのリスト オブジェクト コントロールの使用に関する情報を追加 |
SP1 機能変更 |