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