2017-03-01 71 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

但是說全局意味着它不會是一個成員字段,但(對每個實例都是唯一的),但是對於該應用程序範圍中的所有模塊統一。 –