私のアプリケーションでは、TabPage
の一部がプログラムによってTabControl
に追加されます。各ページにはListView
と2 ListBox
ESが含まれます:ListBoxアイテムをColorにキャストする
//Color Picker
var colorBox = new ListBox
{
DataSource = Enum.GetValues(typeof (KnownColor)),
Height = 40,
Width = tabFiles.Width/3,
Dock = DockStyle.Bottom
};
page.Controls.Add(colorBox);
//Style Picker
var styleBox = new ListBox
{
DataSource = Enum.GetValues(typeof(SymbolType)),
Height = 40,
Width = tabFiles.Width/3,
Dock = DockStyle.Bottom
};
page.Controls.Add(styleBox);
は、今後、私は以下のコードを使用して別のクラスに選択した色や記号を送りたい、それがコンパイルされますが、実行時には無効なキャストを起動します。これをどうすれば解決できますか?
Color color = (Color)((ListBox)tabFiles.TabPages[i].Controls[1]).SelectedItem;
SymbolType symbol = (SymbolType)((ListBox)tabFiles.TabPages[i].Controls[2]).SelectedItem;
P.S:インデックス1と2のページに色と記号が追加されています。
ありがとうございました。
'typeof(KnownColor)'と 'Color color'の関係は何ですか?それとも、それは単にタイプミスですか?また、あなたは無効キャスト例外のメッセージを提供していただけますか? – nemesv
エラーメッセージが '指定されたキャストが有効ではありません.'その' typeof(KnownColor) 'リストボックスのデータソースとして、すべての色を返します。これはSymbolTypeと同じです。セコンドコードでリストボックス内の選択された色の名前から色をつくろうとしています –