2012-04-12 9 views
1

Ich habe eine Datagridview-Klasse für processdialogkey() erstellt. Aber Iam folgende Fehler bekommen ... Kann jede Stelle mir bitte helfen ...DataGridView-Klasse - Errors()

diesem Code:

//Header File MyDGV.h 

    public ref class MyDGV : public DataGridView 
    { 
    protected: 
     virtual bool ProcessDialogKey(System::Windows::Forms::Keys^ keyData) override; 
    }; 

//MyDGV.CPP File 
#include "StdAfx.h" 
#include "MyDGV.h" 

bool MyDGV::ProcessDialogKey(System::Windows::Forms::Keys^ keyData) 
{ 
    Keys^ key = keyData & (System::Windows::Forms::Keys::KeyCode); 
    if (key == System::Windows::Forms::Keys::Enter) 
    { 
     DataGridView::OnKeyDown(gcnew KeyEventArgs(System::Windows::Forms::Keys^ keyData)); 
     return true; 
    } 
    else 
    { 
     return DataGridView::ProcessDialogKey(System::Windows::Forms::Keys^ keyData); 
    } 
} 

führt zu dem folgenden Fehler:

Errors: 
01. warning C4490: 'override' : incorrect use of override specifier; 'MyDGV::ProcessDialogKey' does not match a base ref class method 
02.error C3063: operator '&': all operands must have the same enumeration type 
03.error C2275: 'System::Windows::Forms::Keys' : illegal use of this type as an expression 
04.error C2275: 'System::Windows::Forms::Keys' : illegal use of this type as an expression 

Antwort

1

System :: Windows :: Forms :: Keys ist eine Enumeration und somit ein Werttyp (kein Referenztyp). Um der Signatur der Basisklassenmethode zu entsprechen, die Sie entfernen möchten, müssen Sie den Hut (^) entfernen. Im Allgemeinen sollten Sie den Hut nicht mit einem Werttyp verwenden, außer wenn Sie wirklich Boxverhalten wollen.

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx

+0

Dank Matt..It unterstützt mich gut und arbeitet Wein .... ich klar .... erhalten – user1328559

Verwandte Themen