08. august 2007 - 11:56Der er
8 kommentarer og 1 løsning
problemer med enter-tryk
hejsa exps
jeg har et listview hvor man, på et selected item, kan trykker "Enter" for at lægge én til en af subitems'ne, det virker fint nok. men jeg har en messagebox der kommer op, hvis tallet kommer over 20, og når man så trykker "Enter" i den for at lukke den, lukker den boksen og "trykker" "Enter" i listviewet igen, så den står faktisk i en løkke dér, medmindre man trykker "ok" med musen eller space...
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr);
lblLabels.Text = foundRows[0][5].ToString(); }
private void plusLabel() {
string strExpr; strExpr = "id = '" + selId + "'";
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5].ToString()) >= 20) { MessageBox.Show("Der kan ikke laves mere end 20 labels til hver modtager", "For mange labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) + 1; lblLabels.Text = foundRows[0][5].ToString(); } }
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5]) <= 0) { MessageBox.Show("Der kan ikke laves mindre end 0 labels til hver modtager", "For lidt labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) - 1; lblLabels.Text = foundRows[0][5].ToString(); } }
private void lvwReceivers_KeyUp(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Back: minusLabel(); break; case Keys.Enter: plusLabel(); break; case Keys.Add: plusLabel(); break; case Keys.Subtract: minusLabel(); break; } }
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5].ToString()) >= 20) { MessageBox.Show("Der kan ikke laves mere end 20 labels til hver modtager", "For mange labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) + 1; lblLabels.Text = foundRows[0][5].ToString(); return true; } }
Og ret din KeyUp-eventhandler til at reagere på denne
private void lvwReceivers_KeyUp(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Back: minusLabel(); break; case Keys.Enter: plusLabel(); break; case Keys.Add: if (!plusLabel()) e.SuppressKeyPress = true; break; case Keys.Subtract: minusLabel(); break; } }
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5].ToString()) >= 20) { MessageBox.Show("Der kan ikke laves mere end 20 labels til hver modtager", "For mange labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) + 1; lblLabels.Text = foundRows[0][5].ToString(); return true; } } else { MessageBox.Show("Der er ikke valgt modtager", "Modtager ikke valgt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } }
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5]) <= 0) { MessageBox.Show("Der kan ikke laves mindre end 0 labels til hver modtager", "For lidt labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) - 1; lblLabels.Text = foundRows[0][5].ToString(); return true; } } else { MessageBox.Show("Der er ikke valgt modtager", "Modtager ikke valgt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return false; } }
private void lvwReceivers_KeyUp(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Back: if(!minusLabel()) e.SuppressKeyPress = true; break; case Keys.Enter: if(!plusLabel()) e.SuppressKeyPress = true; break; case Keys.Add: if (!plusLabel()) e.SuppressKeyPress = true; break; case Keys.Subtract: if(!minusLabel()) e.SuppressKeyPress = true; break; }
Hmm, hvis jeg skal have en kørende demo op, må jeg nok bede om lidt mere:
(o) Eksempel på formatet af: stores.xml (du er velkommen til at anonymisere det). (o) Koden for getReceivers(); (o) Hvordan lvwReceivers initialiseres / bindes til data-datasettet?
Det undre mig forresten lidt at det er KeyUp og ikke KeyDown du reagere på. Hvorfor?
Endeligt vil jeg foreslå en lille ændring af din eksisterende kode:
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5].ToString()) >= 20) { MessageBox.Show("Der kan ikke laves mere end 20 labels til hver modtager", "For mange labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.SuppressKeyPress = true; } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) + 1; lblLabels.Text = foundRows[0][5].ToString(); } } else { MessageBox.Show("Der er ikke valgt modtager", "Modtager ikke valgt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.SuppressKeyPress = true; } }
// Use the Select method to find all rows matching the filter. DataRow[] foundRows = data.Tables[0].Select(strExpr); if (Convert.ToInt32(foundRows[0][5]) <= 0) { MessageBox.Show("Der kan ikke laves mindre end 0 labels til hver modtager", "For lidt labels", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.SuppressKeyPress = true; } else { foundRows[0][5] = Convert.ToInt32(foundRows[0][5].ToString()) - 1; lblLabels.Text = foundRows[0][5].ToString(); } } else { MessageBox.Show("Der er ikke valgt modtager", "Modtager ikke valgt", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); e.SuppressKeyPress = true; } }
private void lvwReceivers_KeyUp(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Back: minusLabel(e); break; case Keys.Enter: plusLabel(e); break; case Keys.Add: plusLabel(e); break; case Keys.Subtract: minusLabel(e); break; } }
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.