Ok i find myself :laugh: the solution...if you need...
#ifndef _CSTDGV_
#define _CSTDGV_
namespace primoAlpha {
using namespace System;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Security::Permissions;
/\*\*
\* Classe per la gestione di un DataGridView personalizzato
\* per una gestione tramite delegate del riordinamento delle colonne
\* e per permettere di selezionare multiline senza il tasto control premuto
\*
\* @author Carlo Andreoli
\* @version 0.1.0, 24/07/09 -- Prima versione (beta)
\*/
public ref class personalDataGridView : DataGridView
{
public:
/\*\*
\* Costruttore dove inizializzo le variabili che estendono la classe base
\*
\* @author Carlo Andreoli
\* @version 0.1.0, 24/07/09 -- Prima versione (beta)
\*/
personalDataGridView()
{
this->selectedRowIndexes=gcnew Collections::ArrayList();
this->MultiSelectForced=false;
}
/\*\*
\* variabile per gestire i selected senza il control selezionato
\*/
property bool MultiSelectForced
{
bool get() {
return \_MultiSelectForced;
}
void set(bool value) {
this->\_MultiSelectForced = value;
this->selectedRowIndexes->Clear();
processSelectedRowIndexes();
}
}
protected:
/\*\*
\* override sulla funzione che gestisce OnCellMouseDown
\* per gestire il multiselect senza il tasto del ctr schiacciato
\* @param e
\*
\* @author Carlo Andreoli
\* @version 0.1.0, 24/07/09 -- Prima versione (beta)
\*/
virtual void OnCellMouseDown(DataGridViewCellMouseEventArgs^ e) override
{
DataGridView::OnCellMouseDown(e);
if (e!=nullptr && \_MultiSelectForced) {
int act\_row=e->RowIndex;
if (selectedRowIndexes->Contains(act\_row)) {
selectedRowIndexes->Remove(act\_row);
}
else selectedRowIndexes->Add(act\_row);
//ora vado ad indicare i selezionati e quelli no
processSelectedRowIndexes();
}
}
/\*\*
\* override sulla funzione che gestisce OnMouseMove
\* per gestire il multiselect senza il tasto del ctr schiacciato
\* @param e
\*
\* @author Carlo Andreoli
\* @version 0.1.0, 24/07/09 -- Prima versione (beta)
\*/
virtual void OnMouseMove(MouseEventArgs^ e) override
{}
private:
/\*\*
\* lista di interi per tenere tracci dei valori selezionati
\*/
Collections::ArrayList ^selectedRowIndexes;
/\*\*
\* variabile per gestir