2011-06-06 75 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。正如他们在回答中提到的那样,使用用户控件来“分组”控件来轻松管理它们。