2016-10-03 17 views
0

これは実際に私のIDEと関係があると想像していますが、どうしたらよいか分かりません。私はVisual Studio Professional 2013を使用しています。タイプ 'System.EventHandler'のオブジェクトはタイプ 'System.Windows.Forms.DataGridViewCellEventHandler'に変換できません

オープンファイルフォームとして使用されるフォームを作成しました。左側にディレクトリツリー、右側に選択したファイルの情報を表示するテーブルがありますディレクトリ。

最初は、このテーブルはComponentOneのTrueDBGridでした。しかし、それは私にいくつかの問題を与えていたので、私はついにそれを通常のDataGridViewに置き換えることにしました。

これは、フォームのコードの先頭である:

Public Class dlgOpenFile 

    Private extension() As String  'used for filtering by extension(s) selected in dropdown 
    Private list As DataTable 
    Private treeTimer As Timer 
    Private backStack As New Stack(Of String) 
    Private forwardStack As New Stack(Of String) 
    Private btnTip As New ToolTip() 

    Private Sub dlgOpenFile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

     inTextSearch = False 
     btnTip.SetToolTip(btnBack, "Backward") 
     btnTip.SetToolTip(btnForward, "Forward") 
     btnTip.SetToolTip(btnRefresh, "Refresh") 
     btnTip.SetToolTip(btnSearch, "Search") 
     btnTip.SetToolTip(btnClear, "Clear Search") 

     etc.... 

新しいタイプで動作するように変更するために必要なものを変更した後、私はVSからアプリケーションを実行するために行ってきました - 私は、このランタイムエラーを取得してしまいました

タイプのオブジェクトは 'System.EventHandler' 'System.Windows.Forms.DataGridViewCellEventHandler'

型に変換することができませんこのラインで

Private btnTip As New ToolTip() 

は、だから私は、単にので、私はその特定の行をコメントアウトできデザイナでフォームにツールチップコンポーネントを追加しました。しかし、私は再びそれをしようとしたとき、私は同じことを持って、この行では、この時間:まあ

Private backStack As Stack(Of String) 
Private forwardStack As Stack(Of String) 

Private Sub dlgOpenFile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    backStack = New Stack(Of String) 
    forwardStack = New Stack(Of String) 

Private forwardStack As New Stack(Of String) 

は、だから私はそうのように、Loadイベントにスタックのインスタンス化を移動しました、今私はまったく同じエラーを得るが、そのフォームの呼び出しで!ユーザーはオンライン上で、このフォームを開くためのボタンをクリックすることができますさまざまな形で:

Dim openFile As New dlgOpenFile 

私は本当に私はその1について何ができるかわかりません。エラーがチェーンの上を移動し続けるのはなぜですか?なぜ私はそのような場所でこのようなエラーを起こすのだろうか?

私のコードをチェックしてから、ビジュアルスタジオを少し閉じてからもう一度開いてみましたが、それは何も変わりませんでした。

セルコードのヒントCellClickとDoubleClickを設定するCellFormattingのdgvListには、いくつかのイベントハンドラがあります。フォームを起動するだけで問題が発生する理由はわかりません。 ...

何か助けていただければ幸いです!

答えて

0

"DataGridViewCellEventHandler"をデータグリッドビューのイベントに手動でキャストしているようです。

これをコードで確認してください。もしそうなら、そうしないでください。

代わりに、システムが単独でイベントハンドラメソッドを生成するようにします。例えば

、処理するために/フォームに

ゴー "のDataGridViewがcellValueChanged" のために何かを呼び出します。

DataGridビューコントロールを選択します。

Rightclick-> Properties。

プロパティウィンドウで、「イベント」アイコンを選択します。

"cellValueChanged"を探します。 それをダブルクリックします。以下のようなものが作成されます。

Private Sub DataGridView1_CellValueChanged(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged 

'Handle your business or function calls. 


    End Sub 

これで問題が解決する場合があります。これがあなたが探しているものでない場合は、コメントを追加してください、私はこの回答を削除します。

+0

いいえ、私は特に「DataGridViewCellEventHandler」で何もしません。あなたの提案が何らかの理由で機能しているかどうかを調べるために、私はそれを試しました(私のコードには空のCellValueChangedメソッドがあります)。 – Andarta

0

[OK]を、私は問題が見つかりました:DataGridViewのプロパティでは、私はComponentOneのものを持っていることが、 "C1CommandHolderのC1Command"とC1CommandHolderのC1ContextMenuを選択するためのスポットを選択するスポットがあります。私はC1Commandのドロップダウンで私の印刷コマンドを選択し、C1ContextMenuのドロップダウンに私の印刷コンテキストメニューを選択しました。私はC1Commandを「none」のままにしておくべきだったことが分かります。ありがとう!

関連する問題