2017-03-01 64 views
0

我是C#的新手,我想练习使用参数的技能,但是我遇到了一些麻烦。我正在设计一个系统,当学生点击'view'按钮时,系统应该从数据库中查看每个问题。传递按钮作为参数在C#

目的:

我想要实现的是,当用户点击该按钮被标记为“下一个”。该系统应该'查看;数据网格上的下一个问题。我想也许我应该做一个查询说,像“选择问题来自... where questionID = btnView。也许有一个函数,每当用户点击按钮时,它将1,2,3 ... 10作为questionID (因为有10个问题)

这是我的C#代码:

try 
{ 
string mydbConnection = "datasource=localhost;port=3306;Initial Catalog=project;username=***;password=***;"; 
MySqlConnection connDB = new MySqlConnection(mydbConnection); 
MySqlCommand cmdDataBase = new MySqlCommand("SELECT questions.question, questions.answer FROM questions WHERE questionID ='" + questionID + "' ;",connDB); 
connDB.Open(); 
MySqlDataAdapter sda = new MySqlDataAdapter(); 
sda.SelectCommand = cmdDataBase; 
DataTable dbdataset = new DataTable(); 
sda.Fill(dbdataset); 
BindingSource bSource1 = new BindingSource(); 
sda.Update(dbdataset); 
bSource1.DataSource = dbdataset; 
dataGridView1.DataSource = bSource1; 
sda.Update(dbdataset); 
this.dataGridView1.Columns[3].Visible = false; 
this.dataGridView1.Columns[0].Visible = false; 
connDB.Close(); 
} 

,这是我的按钮功能让每一个 'questionID'

private void button1_Click(object sender, EventArgs e) 
{ 
    for (int i = 1; i >= 10; i++) 
    { 
    int questionID = i; 
    } 
    viewQuestion(questionID); 
} 

questionID不存在当前上下文。

注:

上DataGrid中的东西的作品我只是希望它当用户点击按钮查看每一个问题。

编辑:

int questionID = 0; 
    for (int i = 1; i >= 10; i++) 
    { 
    int questionID = i; 
    } 
    viewQuestion(questionID); 

原因:

本地或命名为“questionID”不能在此范围中声明因为其名称是在一个封闭的局部范围用于定义一个局部参数或参数

+0

有关的,你应该读作[微软.NET的变量和方法适用范围]变量可访问性(更多信息https://msdn.microsoft.com/en-us/库/ ms973875.aspx) –

回答

3

当用户点击标有'next'的按钮时。系统应该'查看'。

所以没有必要在一个单一的点击一个循环,你必须使questionID在同一类中的全局变量,并在每次点击增加的questionID值。这意味着你可以做这样的事情:

int questionID = 0; // Global variable 
private void button1_Click(object sender, EventArgs e) 
{ 
    if(questionID <=10) 
    { 
     viewQuestion(questionID); 
     questionID++; 
    } 
    else 
    { 
     // Display message that question over 
    } 
} 
+0

我会建议不'全球',但使其成为'成员字段'。 –

+0

@ m.rogalski,当然这将是一个在该类范围内声明的字段。 –

+0

但是说全局意味着它不会是一个成员字段,但(对每个实例都是唯一的),但是对于该应用程序范围中的所有模块统一。 –