2017-03-20 5 views
-4

Ich bin neu in der Programmierung und C#, ich versuche, ein kleines elektronisches Voting-System zu machen, wie kann ich die Stimmen ungültig machen, wenn der Wähler eine überschüssige Anzahl von Kandidaten abstimmt. Zum Beispiel: Der Benutzer wählte 7 Kandidaten statt 6 in Ratsposition, wie kann ich seine Stimme ungültig oder nicht machen lassen ihn seine Stimmen zu unterwerfen, bis er es 6.Validieren Sie Daten vor dem Einreichen

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Data.SqlClient; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
public partial class Frm_voteview : Form 
{ 
    string userid; 
    public Frm_voteview() 
    { 
     InitializeComponent(); 
     SqlConnection con = new SqlConnection(Properties.Settings.Default.VotingSystemv2ConnectionString); 
     con.Open(); 
    } 
    public Frm_voteview(string userid) 
    { 
     InitializeComponent(); 
     SqlConnection con = new SqlConnection(Properties.Settings.Default.VotingSystemv2ConnectionString); 
     con.Open(); 
     this.userid = userid; 
    } 
    SqlConnection con = new SqlConnection(Properties.Settings.Default.VotingSystemv2ConnectionString); 

    private void button3_Click(object sender, EventArgs e) 
    { 

    } 

    private void label3_Click(object sender, EventArgs e) 
    { 

    } 

    private void label5_Click(object sender, EventArgs e) 
    { 

    } 

    private void button7_Click(object sender, EventArgs e) 
    { 
     new Frm_Login().Show(); 
     this.Hide(); 
    } 

    private void button8_Click(object sender, FormClosingEventArgs e) 
    { 

    } 



    private void groupBox1_Enter(object sender, EventArgs e) 
    { 

    } 




    private void Frm_voteview_FormClosing(object sender, FormClosingEventArgs e) 
    { 

    } 

    private void Frm_voteview_Click(object sender, EventArgs e) 
    { 

    } 


    private void btn_submit_Click(object sender, EventArgs e) 
    { 
     con.Open(); 
     if (MessageBox.Show("Confirm and View your Votes?", "Close Application", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      MessageBox.Show("Voting Successful", "Application Closed!", MessageBoxButtons.OK); 

      using (SqlCommand command = new SqlCommand("UPDATE candidate SET cTally = cTally + 1 where cName like @cname or cName like @vName", con)) 
      { 

       command.Parameters.AddWithValue("@cname", cb_president.Text); 
       command.Parameters.AddWithValue("@vName", cb_vpresident.Text); 
       command.ExecuteNonQuery(); 

      } 
      foreach (object item in lb_councilor.SelectedItems) 
      { 
       using (SqlCommand command = new SqlCommand("UPDATE candidate SET cTally = cTally + 1 where cName like @coname", con)) 
       { 

        command.Parameters.AddWithValue("@coname", (item as DataRowView)["cName"].ToString()); 

        Console.WriteLine((item as DataRowView)["cName"].ToString()); 
        command.ExecuteNonQuery(); 

       } 
       using (SqlCommand command = new SqlCommand("UPDATE voters SET isVoted = 1 where userName like @uname", con)) 
       { 

        command.Parameters.AddWithValue("@uname", userid); 

        command.ExecuteNonQuery(); 

       } 
      } 
      this.Close(); 
      new Form4().Show(); 
      this.Hide(); 


     } 
     else 
     { 
      this.Activate(); 
     } 
    } 

    private void Frm_voteview_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(Properties.Settings.Default.VotingSystemv2ConnectionString); 
     con.Open(); 

     // TODO: This line of code loads data into the 'votingSystemv2DataSet7.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter2.Fill(this.votingSystemv2DataSet7.candidate); 
     // TODO: This line of code loads data into the 'votingSystemv2DataSet5.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter1.Fill(this.votingSystemv2DataSet5.candidate); 
     // TODO: This line of code loads data into the 'votingSystemv2DataSet4.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter.Fill(this.votingSystemv2DataSet4.candidate); 

    } 

    private void dgv_councilor_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e) 
    { 

    } 

    private void dgv_councilor_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) 
    { 

    } 

    private void Frm_voteview_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     SqlConnection con = new SqlConnection(Properties.Settings.Default.VotingSystemv2ConnectionString); 
     // TODO: This line of code loads data into the 'votingSystemv2DataSet7.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter2.Fill(this.votingSystemv2DataSet7.candidate); 
     // TODO: This line of code loads data into the 'votingSystemv2DataSet5.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter1.Fill(this.votingSystemv2DataSet5.candidate); 
     // TODO: This line of code loads data into the 'votingSystemv2DataSet4.candidate' table. You can move, or remove it, as needed. 
     this.candidateTableAdapter.Fill(this.votingSystemv2DataSet4.candidate); 
     con.Close(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     new Form9().Show(); 
    } 

    private void cb_president_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

    private void lb_councilor_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 
} 

}

+4

Randbemerkung: lesen Sie bitte [MCVE] Leitlinien für die Entsendung Code. –

Antwort

1

machen Willkommen bei C#.

Okay, ein paar Dinge. Zuallererst, die Antwort auf Ihre Frage? Werfen Sie einen Blick auf Ihre Codezeile:

foreach (object item in lb_councilor.SelectedItems) 

... was tut dies durch eine Sammlung von Gegenständen Schleife, die ausgewählt wurden. Nun, versuchen Sie es in lb_councilor.SelectedItems einzugeben - und hoffentlich wird Ihr IntelliSense in VisualStudio Ihnen sagen, was es ist (wahrscheinlich so etwas wie ein IEnumerable oder ähnliches.)

[Das ist einer der guten Tricks mit VS - Eingabe einer Variablen/Object/was auch immer und sehen, was Intellisense darüber bringt.]

Nun, die gute Nachricht ist, Sachen wie IEnumerable hat eine Count-Methode. Also Ihr Problem könnte so einfach sein wie:

if (lb_councilor.SelectedItems.Count != 6) 
{ 
    // uh oh. Better stop them. 

Okay, jetzt, dass aus dem Weg ist, hier einige zusätzliche Dinge:

  • Stellen Sie sicher, jedes Objekt benennen, die ihren Weg in Code findet . candidateTableAdapter1, votingSystemv2DataSet5, label5, button1, Form9 - du wirst das Leben eines anderen Entwicklers zu einem Albtraum machen, wenn du ihm Code übergibst, der auf eine Reihe von standardmäßig benannten Elementen verweist.

  • Verwenden Sie nicht "Objekt" beim Durchlaufen einer Foreach, es sei denn, Sie können es helfen. Hier ist, was Ihr Code

    foreach (object something in somegroup) 
    { 
        use(something as DataRowView); 
    } 
    

tut ... Auch bekannt als, du bist Casting ‚etwas‘ als Objekt ... aber dann gleich danach sind Sie es als DataRowView verwenden. Genauso gut könnte man tun:

foreach (DataRowView something in somegroup) 

Entweder das, oder zumindest etwas tun, wie folgt aus:

foreach (object something in somegroup) 
    { 
     if (something is DataGridView) 
     { 
      // your code is safe from an unexpected data type now 
      use(something as DataGridView); 
Verwandte Themen