- PR -

ToolStripComboBox.ComboBoxのDataSourceプロパティについて

1
投稿者投稿内容
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2007-04-17 22:27
1ヶ月ぶりの書き込みになります。

VisualStudio 2005 Professional Edition で開発しています。
OSはWindowsXP SP2、言語はC#です。

ToolStripComboBox.ComboBoxのDataSourceにDataTableオブジェクトを設定して
項目を表示しようとしていますが、DataTableの内容が表示されないという現象に悩んでいます。
ToolStripComboBoxはContextMenuStripのメニュー項目として追加しています。
以下、サンプルコードになります。

コード:
public partial class Form1 : Form
{
	private DataTable _comboItem;

	public Form1()
	{
		InitializeComponent();

		// ComboBoxへバインドするDataTable
		_comboItem = new DataTable();
		_comboItem.Columns.Add("key", typeof(int));
		_comboItem.Columns.Add("value", typeof(string));

		_comboItem.Rows.Add(1, "ほげ");
		_comboItem.Rows.Add(2, "ふが");

		// 通常のComboBox
		comboBox1.DataSource = _comboItem.Copy();
		comboBox1.ValueMember = "key";
		comboBox1.DisplayMember = "value";

		// Form1のContextMenuStripに設定したToolStripComboBox
		toolStripComboBox1.ComboBox.DataSource = _comboItem.Copy();
		toolStripComboBox1.ComboBox.ValueMember = "key";
		toolStripComboBox1.ComboBox.DisplayMember = "value";

		// Form1のMenuStripへ追加したToolStripComboBox
		toolStripComboBox2.ComboBox.DataSource = _comboItem.Copy();
		toolStripComboBox2.ComboBox.ValueMember = "key";
		toolStripComboBox2.ComboBox.DisplayMember = "value";

		// MenuItemのサブメニューとして追加したToolStripComboBox
		toolStripComboBox3.ComboBox.DataSource = _comboItem.Copy();
		toolStripComboBox3.ComboBox.ValueMember = "key";
		toolStripComboBox3.ComboBox.DisplayMember = "value";
	}
}


WindowsアプリケーションのForm1クラスに、デザイナ上で以下のコントロールを追加しました。
また、Form1のContextMenuStripとしてtoolStripComboBox1を設定しています。

  • combobox1
  • contextMenuStrip1
  • toolStripComboBox1 (contextMenuStrip1の項目に追加)
  • menuStrip1
  • toolStripComboBox2 (menuStrip1の項目に追加)
  • toolStripMenuItem1 (menuStrip1の項目に追加)
  • toolStripComboBox3 (toolStripMenuItem1のDropDownItemsに追加)

これを実行すると、toolStripComboBox1のコンボボックスの表示が空のままでした。
同様の方法でDataSourceの指定をおこなったcomboBox1では正しく表示されました。

また、海外サイトで得た情報をもとに、toolStripComboBox2とtoolStripComboBox3で比較したところ
toolStripComboBox2にはDataTableの内容が表示されましたが、
toolStripComboBox3では空っぽのままでした。


こちらの過去ログを検索しましたが、同様の話題は見つかりませんでした。
下記のスレッドが見つかりましたが、違う話題でした。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33169&forum=7

Googleで検索したところ、似たような話題がいくつか見つかりましたが
DataSourceの設定をやめ、Itemsプロパティを使う以外の対処方法は見つけられませんでした。

再現するかどうか、ほかに回避方法はあるかどうかなど、情報をいただければと思います。
よろしくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2007-04-20 22:04
自己レスです。

ToolStripComboBoxは使わないことにしました。
選択ダイアログを別に用意して、それをメニューから呼び出す形にしました。
あまり参考にはならないと思いますが、一応報告でした。
1

スキルアップ/キャリアアップ(JOB@IT)