ListObject コントロール
ListObject コントロールは、イベントを公開し、データにバインドできるリストです。 リストをワークシートに追加すると、Visual Studio によって ListObject コントロールが作成されます。このコントロールは、Microsoft Office Excel オブジェクト モデルを走査しなくても、コードで直接使用できます。
対象: このトピックの情報は、Excel 2007 と 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 コントロールにデータを読み込む
概念
Office ソリューションでのコントロールへのデータのバインド
アプリケーション レベルのアドインにおける実行時の Word 文書や Excel ブックの拡張
ホスト項目およびホスト コントロールのプログラム上の制限事項