我最近爲學生項目開發了一個應用程序,並且一切正常。但是,如果我在這裏問一些問題,你當然可以認爲整個事情不是那麼實用......而且你是對的。讓我們開始吧。基本上我的項目的功能版本使用UI控制檯。在另一個班級中顯示我的表格
它運行,但從用戶的角度來看,使用類似這樣的東西並不是世界上最令人驚喜的東西。所以我決定用一些Windows窗體替換舊的控制檯。
Project global render with console
Project global render with form
這就是事情變得錯誤。我有 「3」 類:
- 的Program.cs(主程序與所有嚴肅的事情)
- formOne.cs
- (爲每個選項按鈕的第一種形式) 形式/二至五個/的.cs(每個選項打開相應的表格)
在某個點,Program.cs中將啓動formOne.cs,從那裏用戶應該能夠在各種選項之間導航,因此各種形式......但不是。 formOne.cs打開,然後我們不能點擊任何東西(以及我們可以但沒有任何反應)。我在某個地方犯了一個錯誤,我想知道在哪裏以及如何解決它。這裏是我是如何進行的:
(這是基本的算法,而不是整個代碼)
的Program.cs:
class Program {
formOne winRecep = new formOne();
formTwo winCrea = new formTwo();
formThree winSearch = new formThree();
formFour winDel = new formFour();
formFive winView = new formFive();
winRecep.ShowDialog();
string userChoice = winRecep.getUserChoice();
switch(userChoice){
case "create new task" :
winCrea.ShowDialog();
break;
case "search a task" :
winSearch.ShowDialog();
break;
case "delete a task" :
winDel.ShowDialog();
break;
case "view my tasks" :
winView.ShowDialog();
break;
}
}
formOne.cs:
class formOne {
string userChoice;
public formOne()
{
InitializeComponent();
}
public string getUserChoice()
{
return userChoice;
}
private void formOne_Load(object sender, EventArgs e)
{
//blabla update current date, current hour...
}
private void buttonOptionOne_Click(object sender, EventArgs e)
{
userChoice = "create new task";
}
private void buttonOptionTwo_Click(object sender, EventArgs e)
{
userChoice = "search a task";
}
private void buttonOptionThree_Click(object sender, EventArgs e)
{
userChoice = "delete a task";
}
private void buttonOptionFour_Click(object sender, EventArgs e)
{
userChoice = "view my tasks";
}
}
這似乎很清楚,但我在某個地方犯了一個錯誤。我想在Program.cs中工作,而不是在formOne.cs中工作,因爲一切都在Program.cs中,所以最合理的方法是在這裏工作,而不是在類中隨處添加信息和變量。
有人可以幫我解釋爲什麼它錯了嗎?
編輯:使用Program.cs的申請沒有解決的事情:
class Program {
var winRecep = new formOne();
var createtask = new formTwo();
var viewTask = new formThree();
var searchTask = new formFour();
var deleteTask = new formFive();
Application.Run(winRecep);
string userChoice = winRecep.getUserChoice();
switch(userChoice){
case "create new task" :
Application.Run(createtask);
break;
case "search a task" :
Application.Run(searchTask);
break;
case "delete a task" :
Application.Run(deleteTask);
break;
case "view my tasks" :
Application.Run(viewTask);
break;
}
}
您需要像爲formOne一樣爲選定的表單創建實例。 'var winTwo = new formTwo(); winTwo.ShowDialog()' – Fabio
問題是這樣的:Application.Run(winRecep)。要麼保留那個,並刪除switch語句或保留switch語句併爲winRecep調用創建一個案例。爲什麼?因爲你爲你創建了多個線程循環,你只需要1. – aguertin