Avatar billede beef12 Nybegynder
05. juli 2005 - 20:49 Der er 10 kommentarer og
1 løsning

Højre-klik i et Datagrid

Hej Eksperter,

Jeg sidder i VS.NET og prøver at få en menu frem når jeg højreklikker på en række i mit datagrid. Mit datagrid ser sådan ud;

string selectEmp= sqlFactory.getEmployees();
DataSet ds_emp = new DataSet();
this.sqlDataAdapter1=new SqlDataAdapter(selectEmp,C);
this.sqlDataAdapter1.Fill(ds_emp,"employees");
this.dataGrid2.SetDataBinding(ds_emp,"employees");
this.dataGrid2.ReadOnly = true;

Jeg har prøvet lidt forskelligt - men det er ikke lykkedes mig at få det til at virke...
Avatar billede lifo Nybegynder
05. juli 2005 - 22:35 #1
du skal bruge en ContextMenu
Avatar billede beef12 Nybegynder
05. juli 2005 - 23:54 #2
En lille smule mere info ville være godt. Jeg kan godt finde ud af at lave en ContextMenu - men jeg ved ikke hvordan jeg kan koble denne op imod alle mine rækker i datagrid.
Avatar billede lifo Nybegynder
06. juli 2005 - 09:26 #3
prøv at se på
http://www.syncfusion.com/FAQ/WindowsForms/Default.aspx#Top
der er flere eksempler
Avatar billede beef12 Nybegynder
06. juli 2005 - 18:48 #4
der var ikke meget info at hente der... har du prøvet det før - ved du hvordan man skal gøre det?
Avatar billede lifo Nybegynder
06. juli 2005 - 18:51 #5
øhhhh ja jeg har prøvet det før  har bare glemt det
men jeg kan prøve at finde et eksempel frem
Avatar billede lifo Nybegynder
06. juli 2005 - 19:17 #6
du kan bruge

System.Drawing.Point pt = new Point(e.X, e.Y);
DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt);

til at få fat i hvor på formen du har klikket
i hti har du både adgang til Column og Row og andet

og kan så få fat i det du vil gennem datagrid1[hti.Row,hti.Column].ToString();
Avatar billede lifo Nybegynder
06. juli 2005 - 19:18 #7
glemte at sige at det skulle være i mouseUp
Avatar billede beef12 Nybegynder
07. juli 2005 - 08:16 #8
Det prøver jeg at gå videre med - det kan være at den kodestump er det jeg har brug for. Da jeg ikke kan få min contextmenu til at ramme datagrid'et.
Avatar billede beef12 Nybegynder
07. juli 2005 - 14:48 #9
Nu fik jeg det til at virke... næsten da

int i = 0;
DataGrid.HitTestInfo hti = null;

public void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)

{
System.Drawing.Point pt = new Point(e.X, e.Y);
hti = dataGrid1.HitTest(pt);

string [] lista = new string[maxC];
if(hti.Type == DataGrid.HitTestType.Cell)

{
dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column);
dataGrid1.Select(hti.Row);
do
{
lista[i] = dataGrid1[hti.Row, i].ToString();
i++;
}
while(i < maxC);
}
else
{
    if(e.Button == MouseButtons.Right)
    {
        ContextMenu m = new ContextMenu();
        this.ContextMenu= m;

        MenuItem dgItem1 = new MenuItem();
   
        dgItem1.Text = "Slet";
        m.MenuItems.Add(dgItem1);       

        dgItem1.Click += new System.EventHandler(this.dgItem1_Click);   
        }
    }
}
    private void dgItem1_Click(object sender, System.EventArgs e)
    {
          MessageBox.Show(dataGrid1[hti.Row, i].ToString());
    }

Mit problem er nu så bare at få min contextMenu til at begrænse sig til selve rækkerne. Nu forholder det sig sådan at man kan højreklikke overalt i formen - hvilket så naturligvis genererer en OutOfRange Exception. Ved du hvordan jeg begrænser den?
Avatar billede beef12 Nybegynder
07. juli 2005 - 16:29 #10
this.ContextMenu = m;
Skulle være:
dataGrid1.ContextMenu= m;

Selvfølgelig :-)

Tak for hjælpen lifo - smid et svar.
Avatar billede lifo Nybegynder
07. juli 2005 - 17:51 #11
øhh ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

Network Engineer

KMD A/S

E2E Tester

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kickstart din IT-karriere som IT-supporterelev på Flyvestation Aalborg

Nextway Software A/S

Software Architect