2011-12-29 73 views
0

@competent_techの助けを借りて、私はコンボボックスアイテムをボタンクリックで選択し、VBコードを解析してドキュメントを表示させることができました。これは私がbutton.clickイベントに使用しているコードがあるこのキャストエラーを解決するにはどうすればよいですか?

<ComboBox Name="ComboBox1" ItemsSource="{Binding Source={StaticResource vehicleID}, XPath=//manualtype/ipck/vin}" IsReadOnly="True"></ComboBox> 

:私は次のコードを使用してXMLファイルにコンボボックスをバインドすることを決定するまで

すべてが、正常に動作しているように見えた

Try 
     Dim sFileName As String 

     If ComboBox1.SelectedValue IsNot Nothing Then 
      sFileName = DirectCast(ComboBox1.SelectedValue, ComboBoxItem).Content.ToString() 
      Dim theDocument As New System.Windows.Xps.Packaging.XpsDocument(System.IO.Path.Combine("C:\EMR", sFileName & "ipck.xps"), System.IO.FileAccess.Read) 
      DocumentViewer1.Document = theDocument.GetFixedDocumentSequence() 
     End If 
    Catch ex As Exception 
     MessageBox.Show("ERROR: " & ex.Message) 
    End Try 

コンボボックスは正常に動作していますが、XMLファイルの値を表示していますが、アイテムを選択してボタンをクリックするとエラーメッセージが表示されます。エラーメッセージ "状態のオブジェクトをキャストできません 'SYSTEM.STRING' 'SYSTEM.WINDOWS.CONTROLS.COMBOBOXITEM'を入力します。

私はこの問題を解決することができますので、私は更新することができますむしろ、ソフトウェア私はリストを更新するたびに再コーディングするよりもXMLファイルを経由してcomboboxitemリスト。ありがとう。

+0

SelectedValueがすでに文字列であることは真実ではありませんか?そして、SelectedItemはComboBoxItemですか? –

+0

デバッガを使用する方法を学ぶために時間をとってみても、やっかいではありません。ブレークポイントを設定してウォッチウィンドウを使うだけで大いに役立ちます。非常に多くのプログラマーがデバッグに没頭しており、開発できる最も重要なスキルの1つです。 – codeConcussion

答えて

1

あなたはComboBoxItemオブジェクトに文字列ですComboBox1.SelectedValueをキャストしようとしている。

私はあなたがちょうど使用できると思う:

sFileName = ComboBox1.SelectedValue 

あなたのコンボボックスはファイル名のリストではありませんか?

+0

ありがとう、それは問題を解決しました。うわー、誰かが最終的にこのコーディングのものを手に入れます。だから、基本的には、どのような状況でDirectCastメソッドが呼び出されますか? –

+0

タイプを変更する必要がある場合は、キャストを使用します。だから、文字列 "1"とint 4があり、それらを追加したいとします。あなたはint 1に文字列 "1"をキャストする必要がありますので、それを4に追加することができます。実際にあなたの場合はそうではありません。 – brendan

関連する問題