2011-06-06 103 views
0

這是我第一次使用C#表單,我不知道我在做什麼是正確的。下面 是在C#我的工作空間的形式,你可以看到,有很多事情有它的混亂... enter image description here以c#形式組織工作空間

我使用this.BackgroundImage =圖像;改變窗體的背景圖像,我只需要每當需要時關閉每個控件的可視屬性,以便在運行應用程序時它看起來很漂亮(雖然im仍然沒有完成,但很難在窗體中工作凌亂) enter image description here

有反正我可以有組織地工作,就像我可以有很多形式的工作,而不是一個,只是它們相互連接起來像在PowerPoint中,你可以有很多幻燈片,只是使用超鏈接指向其他幻燈片......請幫助... ,這裏是我的代碼(抱歉小白編碼風格)

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.OleDb; 
using Microsoft.VisualBasic; 

namespace PProj1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      backfromaboutandhow.Visible = false; 
      nextbutton.Visible = false; 
      backfromreserve.Visible = false; 
      textBox1.Visible = false; 
      textBox2.Visible = false; 
      textBox3.Visible = false; 
      textBox4.Visible = false; 
      label1.Visible = false; 
      label2.Visible = false; 
      label3.Visible = false; 
      label4.Visible = false; 
      label5.Visible = false; 
      finish.Visible = false; 
      backtoreserve.Visible = false; 
      N1.Visible = false; 
      N2.Visible = false; 
      N3.Visible = false; 
      N4.Visible = false; 
      N5.Visible = false; 
      N6.Visible = false; 
      N7.Visible = false; 
      N8.Visible = false; 
      S1.Visible = false; 
      S2.Visible = false; 
      S3.Visible = false; 
      S4.Visible = false; 
      S5.Visible = false; 
      S6.Visible = false; 
      S7.Visible = false; 
      S8.Visible = false; 
      E1.Visible = false; 
      E2.Visible = false; 
      E3.Visible = false; 
      E4.Visible = false; 
      W1.Visible = false; 
      W2.Visible = false; 
      W3.Visible = false; 
      NW1.Visible = false; 
      NW2.Visible = false; 
      NE1.Visible = false; 
      NE2.Visible = false; 
      SW.Visible = false; 
      SE.Visible = false; 
     } 

     OleDbConnection con; 
     OleDbCommand cmd; 
     OleDbDataAdapter adapter; 
     DataSet ds; 

     private void pictureBox1_MouseHover(object sender, EventArgs e) 
     { 
      aboutoldtrafford.Location = new Point(16, 9); 
     } 

     private void pictureBox1_MouseLeave(object sender, EventArgs e) 
     { 
      aboutoldtrafford.Location = new Point(9, 9); 
     } 

     private void pictureBox2_MouseHover(object sender, EventArgs e) 
     { 
      howtogetthere.Location = new Point(16, 62); 
     } 

     private void pictureBox2_MouseLeave(object sender, EventArgs e) 
     { 
      howtogetthere.Location = new Point(9, 62); 
     } 

     private void pictureBox3_MouseHover(object sender, EventArgs e) 
     { 
      reserveaticket.Location = new Point(16, 113); 
     } 

     private void pictureBox3_MouseLeave(object sender, EventArgs e) 
     { 
      reserveaticket.Location = new Point(9, 113); 
     } 

     private void pictureBox1_MouseClick(object sender, MouseEventArgs e) 
     { 
      Image image = Properties.Resources.about; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = false; 
      howtogetthere.Visible = false; 
      reserveaticket.Visible = false; 
      backfromaboutandhow.Visible = true; 
     } 

     private void pictureBox4_MouseHover(object sender, EventArgs e) 
     { 
      backfromaboutandhow.Location = new Point(566, 511); 
     } 

     private void pictureBox4_MouseLeave(object sender, EventArgs e) 
     { 
      backfromaboutandhow.Location = new Point(559, 511); 
     } 

     private void pictureBox4_MouseClick(object sender, MouseEventArgs e) 
     { 
      backfromaboutandhow.Visible = false; 
      Image image = Properties.Resources.oldtraffordwelcome1; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = true; 
      howtogetthere.Visible = true; 
      reserveaticket.Visible = true; 

     } 

     private void pictureBox2_MouseClick(object sender, MouseEventArgs e) 
     { 
      Image image = Properties.Resources.howto; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = false; 
      howtogetthere.Visible = false; 
      reserveaticket.Visible = false; 
      backfromaboutandhow.Visible = true; 
     } 

     private void pictureBox3_MouseClick(object sender, MouseEventArgs e) 
     { 
      Image image = Properties.Resources.reg1; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = false; 
      howtogetthere.Visible = false; 
      reserveaticket.Visible = false; 
      backfromaboutandhow.Visible = false; 
      textBox1.Visible = true; 
      textBox2.Visible = true; 
      textBox3.Visible = true; 
      textBox4.Visible = true; 
      label1.Visible = true; 
      label2.Visible = true; 
      label3.Visible = true; 
      label4.Visible = true; 
      nextbutton.Visible = true; 
      backfromreserve.Visible = true; 
     } 

     private void pictureBox5_MouseHover(object sender, EventArgs e) 
     { 
      nextbutton.Location = new Point(545, 463); 
     } 

     private void pictureBox5_MouseLeave(object sender, EventArgs e) 
     { 
      nextbutton.Location = new Point(539, 463); 
     } 

     private void pictureBox6_MouseHover(object sender, EventArgs e) 
     { 
      backfromreserve.Location = new Point(30, 463); 
     } 

     private void pictureBox6_MouseLeave(object sender, EventArgs e) 
     { 
      backfromreserve.Location = new Point(36, 463); 
     } 

     private void pictureBox6_MouseClick(object sender, MouseEventArgs e) 
     { 
      nextbutton.Visible = false; 
      backfromreserve.Visible = false; 
      Image image = Properties.Resources.oldtraffordwelcome1; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = true; 
      howtogetthere.Visible = true; 
      reserveaticket.Visible = true; 
      textBox1.Visible = false; 
      textBox2.Visible = false; 
      textBox3.Visible = false; 
      textBox4.Visible = false; 
      label1.Visible = false; 
      label2.Visible = false; 
      label3.Visible = false; 
      label4.Visible = false; 
      label5.Visible = false; 
      finish.Visible = false; 
      backtoreserve.Visible = false; 

     } 

     private void pictureBox5_MouseClick(object sender, MouseEventArgs e) 
     { 
      if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "") 
      { 
       Image image = Properties.Resources.reg21; 
       this.BackgroundImage = image; 

       textBox1.Visible = false; 
       textBox2.Visible = false; 
       textBox3.Visible = false; 
       textBox4.Visible = false; 
       label1.Visible = false; 
       label2.Visible = false; 
       label3.Visible = false; 
       label4.Visible = false; 
       label5.Visible = false; 
       nextbutton.Visible = false; 
       backfromreserve.Visible = false; 
       finish.Visible = true; 
       backtoreserve.Visible = true; 
       N1.Visible = true; 
       N2.Visible = true; 
       N3.Visible = true; 
       N4.Visible = true; 
       N5.Visible = true; 
       N6.Visible = true; 
       N7.Visible = true; 
       N8.Visible = true; 
       S1.Visible = true; 
       S2.Visible = true; 
       S3.Visible = true; 
       S4.Visible = true; 
       S5.Visible = true; 
       S6.Visible = true; 
       S7.Visible = true; 
       S8.Visible = true; 
       E1.Visible = true; 
       E2.Visible = true; 
       E3.Visible = true; 
       E4.Visible = true; 
       W1.Visible = true; 
       W2.Visible = true; 
       W3.Visible = true; 
       NW1.Visible = true; 
       NW2.Visible = true; 
       NE1.Visible = true; 
       NE2.Visible = true; 
       SW.Visible = true; 
       SE.Visible = true; 

      } 
      else 
      { 
       label5.Visible = true; 
      } 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      con = new OleDbConnection(@" provider=Microsoft.ace.Oledb.12.0; data source=C:\OldTrafford.accdb; Persist Security Info=False"); 
      loaddata(); 
     } 
     void loaddata() 
     { 
      adapter = new OleDbDataAdapter("select * from oldtraff", con); 
      ds = new DataSet(); //student-> table name in stud.accdb file 
      adapter.Fill(ds, "oldtraff"); 
      ds.Tables[0].Constraints.Add("pk_ID", ds.Tables[0].Columns[0], true);//creating primary key for Tables[0] in dataset 
      //dataGridView1.DataSource = ds.Tables[0]; 
     } 

     private void finish_MouseHover(object sender, EventArgs e) 
     { 
      finish.Location = new Point(545, 553); 
     } 

     private void finish_MouseLeave(object sender, EventArgs e) 
     { 
      finish.Location = new Point(539, 553); 
     } 

     private void backtoreserve_MouseHover(object sender, EventArgs e) 
     { 
      backtoreserve.Location = new Point(30, 553); 
     } 

     private void backtoreserve_MouseLeave(object sender, EventArgs e) 
     { 
      backtoreserve.Location = new Point(36, 553); 
     } 

     private void backtoreserve_MouseClick(object sender, MouseEventArgs e) 
     { 
      Image image = Properties.Resources.reg1; 
      this.BackgroundImage = image; 
      aboutoldtrafford.Visible = false; 
      howtogetthere.Visible = false; 
      reserveaticket.Visible = false; 
      backfromaboutandhow.Visible = false; 
      textBox1.Visible = true; 
      textBox2.Visible = true; 
      textBox3.Visible = true; 
      textBox4.Visible = true; 
      label1.Visible = true; 
      label2.Visible = true; 
      label3.Visible = true; 
      label4.Visible = true; 
      nextbutton.Visible = true; 
      backfromreserve.Visible = true; 
      finish.Visible = false; 
      backtoreserve.Visible = false; 
      N1.Visible = false; 
      N2.Visible = false; 
      N3.Visible = false; 
      N4.Visible = false; 
      N5.Visible = false; 
      N6.Visible = false; 
      N7.Visible = false; 
      N8.Visible = false; 
      S1.Visible = false; 
      S2.Visible = false; 
      S3.Visible = false; 
      S4.Visible = false; 
      S5.Visible = false; 
      S6.Visible = false; 
      S7.Visible = false; 
      S8.Visible = false; 
      E1.Visible = false; 
      E2.Visible = false; 
      E3.Visible = false; 
      E4.Visible = false; 
      W1.Visible = false; 
      W2.Visible = false; 
      W3.Visible = false; 
      NW1.Visible = false; 
      NW2.Visible = false; 
      NE1.Visible = false; 
      NE2.Visible = false; 
      SW.Visible = false; 
      SE.Visible = false; 
     } 
    } 
} 

回答

2

你也許應該求索使用「用戶控制」來分隔你的屏幕。這些控件中的每一個都應該管理它自己與用戶的交互。如果你需要讓主表單知道這些控件之一發生了什麼,你可以使用一個事件(就像任何其他類型的控件一樣)。

對於你的例子中,你有5點控制(每個屏幕),也許每個控制的幾個事件,指示用戶已按下「下一步」按鈕(或其他)。

主要控制應該改變在任何給定時間顯示其控制... ...,它可能會是最容易通過代碼而不是GUI設計做到這一點。

編輯:

這個環節是超級老,但它會給你我的意思的想法 - 救我從做一堆的屏幕截圖,並在這裏將其粘貼:

http://msdn.microsoft.com/en-us/library/aa302342.aspx

http://knol.google.com/k/creating-custom-controls-with-c-net#

+0

是的,我使用事件來改變我的屏幕,如關閉其他控件,並更改窗體的背景圖像,如果這是你的意思。但仍然我的「工作區」形式仍然是控制混亂,因爲我不能在應用程序未運行時隱藏它們 – 2011-06-06 08:18:16

+0

我認爲你誤解了。您應該創建幾個自己的控件 - 這些控件將包含您當前在單個窗體上擁有的屬於一個截然不同的「屏幕」的所有控件。您將創建的新「屏幕控制」將具有自己的新事件,如「NextScreen」。 – Steve 2011-06-06 08:24:07

+0

請參見上面我的編輯,有一個鏈接到一個教程。 – Steve 2011-06-06 08:27:06

0

你可以爲每個一個用戶控件,只需隱藏/顯示該用戶控件。

+0

當你說usercontrol時,這是否意味着事件?因爲我使用它們,當程序運行時點擊某些內容時,它們會隱藏/顯示控件。但是如果程序沒有運行並且我仍在編輯呢?我仍然可以看到我的情況下的所有控件 – 2011-06-06 08:22:52

+0

@RojBeraña。通過用戶控件,我的意思是你需要通過添加該項目來創建一個新的用戶控件。因此,每次您在窗口中看到的是包含各種其他控件的用戶控件。當你點擊Next或Back時,你會看到一個包含其他控件的不同的用戶控件。因此,所有你需要做的就是在Next或Back按鈕上點擊,只顯示一個特定的用戶控件並隱藏其餘的。通過這種使用用戶控件的方式,您可以在特定的時間對屏幕上可見的項目進行分組。你可以在它的cs文件中處理每個用戶控件的事件。 – 2011-06-06 08:40:37

1

我認爲你可以像你的應用程序一樣製作wizard。正如他們在回答中提到的那樣,使用用戶控件來「分組」控件來輕鬆管理它們。