初学C#,在进行不同窗体之间的数据传递时总觉的自己的方法非常不好,希望大家讨论一下,学习学习。

解决方案 »

  1.   

    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=24403
      

  2.   

    方法一:可以用session对象进行窗体间的数据传递
    如在窗体1中定义了一个session(@object)=某个值
    在其他窗体便可以对该session(@object)对象进行引用了
    方法二:可以使用cookie进行进行窗体间的数据传递
    如在窗体1中定义一个cookie对象,然后再在其他窗体对该对象进行引用便可以了
    其实窗体传参的方法很多具体实现可以根据你的需要:)
      

  3.   

    <html>
       <script language="C#" runat="server">      void Page_Load(Object sender, EventArgs E) {
          
            if (Request.Cookies["preferences1"] == null) {
            
              HttpCookie cookie = new HttpCookie("preferences1");
              cookie.Values.Add("ForeColor","black");
              cookie.Values.Add("BackColor","beige");
              cookie.Values.Add("LinkColor","blue");
              cookie.Values.Add("FontSize","8pt");
              cookie.Values.Add("FontName","Verdana");
              Response.AppendCookie(cookie);
            }
          }      protected String GetStyle(String key) {
          
            HttpCookie cookie = Request.Cookies["preferences1"];
         
            if (cookie != null) {
            
              switch (key) {
              
                case "ForeColor" : 
                  return cookie.Values["ForeColor"]; 
                  break;
                  
                case "BackColor" : 
                  return cookie.Values["BackColor"]; 
                  break;
                  
                case "LinkColor" : 
                  return cookie.Values["LinkColor"]; 
                  break;
                  
                case "FontSize" : 
                  return cookie.Values["FontSize"]; 
                  break;
                  
                case "FontName" : 
                  return cookie.Values["FontName"]; 
                  break;
              }
            }
            
            return "";
          }  </script>  <style>    body {
          font: <%=GetStyle("FontSize")%> <%=GetStyle("FontName")%>;
          background-color: <%=GetStyle("BackColor")%>;
        }    a { color: <%=GetStyle("LinkColor")%> }  </style>  <body style="color:<%=GetStyle("ForeColor")%>">    <h3><font face="宋体">在客户端 Cookie 中存储易失数据</font></h3>    <b><a href="customize.aspx">自定义此页</a></b><p>    设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>
        设想这里有某些内容 ...<br>  </body>
      
    </html>
      

  4.   

    <html>
       <script language="C#" runat="server">      void Page_Load(Object sender, EventArgs E) {
          
            if (!IsPostBack){
              HttpCookie cookie = Request.Cookies["preferences1"];
              ViewState["Referer"] = Request.Headers["Referer"];
              
              if ( cookie != null ){
                BackColor.Value = (String)cookie.Values["BackColor"];
                ForeColor.Value = (String)cookie.Values["ForeColor"];
                LinkColor.Value = (String)cookie.Values["LinkColor"];
                FontSize.Value = (String)cookie.Values["FontSize"];
                FontName.Value = (String)cookie.Values["FontName"];
              }
            }
          }      void Submit_Click(Object sender, EventArgs E) {
          
            HttpCookie cookie = new HttpCookie("preferences1");
            cookie.Values.Add("ForeColor",ForeColor.Value);
            cookie.Values.Add("BackColor",BackColor.Value);
            cookie.Values.Add("LinkColor",LinkColor.Value);
            cookie.Values.Add("FontSize",FontSize.Value);
            cookie.Values.Add("FontName",FontName.Value);
            Response.AppendCookie(cookie);        if ( ViewState["Referer"] != null ){
              Response.Redirect(ViewState["Referer"].ToString());
            }
          }      void Cancel_Click(Object sender, EventArgs E) {
            if ( ViewState["Referer"] != null ){
              Response.Redirect(ViewState["Referer"].ToString());
            }
          }      String GetStyle(String key) {
          
            HttpCookie cookie = Request.Cookies["preferences1"];
         
            if (cookie != null) {
            
              switch (key) {
              
                case "ForeColor" : 
                  return cookie.Values["ForeColor"]; 
                  break;
                  
                case "BackColor" : 
                  return cookie.Values["BackColor"]; 
                  break;
                  
                case "LinkColor" : 
                  return cookie.Values["LinkColor"]; 
                  break;
                  
                case "FontSize" : 
                  return cookie.Values["FontSize"]; 
                  break;
                  
                case "FontName" : 
                  return cookie.Values["FontName"]; 
                  break;
              }
            }
            return "";      
          }  </script>  <style>    body {
          font: <%=GetStyle("FontSize")%> <%=GetStyle("FontName")%>;
          background-color: <%=GetStyle("BackColor")%>;
        }    table {
          font: <%=GetStyle("FontSize")%> <%=GetStyle("FontName")%>;
          background-color: <%=GetStyle("BackColor")%>;
          foreground-color: <%=GetStyle("ForeColor")%>
        }    a { color: <%=GetStyle("LinkColor")%> }  </style>  <body style="color:<%=GetStyle("ForeColor")%>">     <form runat="server">    <h3><font face="宋体">自定义此页</font></h3>    <b>选择您的首选项:</b><p>    <table style="color:<%=GetStyle("ForeColor")%>">
          <tr>
            <td>背景色:</td>
            <td>
              <select id="BackColor" runat="server">
                <option>beige</option>
                <option>yellow</option>
                <option>red</option>
                <option>blue</option>
                <option>lightblue</option>
                <option>lightgreen</option>
                <option>black</option>
                <option>white</option>
              </select>
            </td>
          </tr>
          <tr>
            <td>前景色:</td>
            <td>
              <select id="ForeColor" runat="server">
                <option>black</option>
                <option>beige</option>
                <option>yellow</option>
                <option>red</option>
                <option>blue</option>
                <option>lightblue</option>
                <option>lightgreen</option>
                <option>white</option>
              </select>
            </td>
          </tr>
          <tr>
            <td>超级链接的颜色:</td>
            <td>
              <select id="LinkColor" runat="server">
                <option>blue</option>
                <option>beige</option>
                <option>yellow</option>
                <option>red</option>
                <option>lightblue</option>
                <option>lightgreen</option>
                <option>black</option>
                <option>white</option>
              </select>
            </td>
          </tr>
          <tr>
            <td>字体大小:</td>
            <td>
              <select id="FontSize" runat="server">
                <option>9pt</option>
                <option>10.5pt</option>
                <option>12pt</option>
                <option>14pt</option>
              </select>
            </td>
          </tr>
          <tr>
            <td>字体名称:</td>
            <td>
              <select id="FontName" runat="server">
                <option>宋体</option>
                <option>Tahoma</option>
                <option>Arial</option>
                <option>Times</option>
              </select>
            </td>
          </tr>
        </table>    <p>    <input type="submit" OnServerClick="Cancel_Click" Value="取消" runat="server"/>
        <input type="submit" OnServerClick="Submit_Click" Value="提交" runat="server"/>    </form>  </body>
    </html>
      

  5.   

    谢谢大家,不过我问的是C#的应用程序,“sx_lxh(路漫漫) ”给的那个例子基本上跟我的想要的相似,不过那是VB的,请问有没有C#的例子。用C#做的窗体传参的各种方法。
      

  6.   

    我是用方法传的以上那位给的html的方法多是的传参问题主要是WinForm的
      

  7.   

    比如我用的是静态变量,但是在一个窗体的处理过程中要访问另一个窗体的静态变量,感觉不太合理。C#又不支持全局变量(以前主要做vc,怀念全局变量),所以希望能够知道比较好的、常用的窗体之间传数据的方法。
      

  8.   

    我常常用:1,构造函数的参数传递 2,如过全局的东西较多就写一个Globals类,把全局的东西全放里边
      

  9.   

    窗体之间传值,可以用构造函数。窗体Fr_zspzd:
    private void button7_Click(object sender, System.EventArgs e)
    {
    Fr_zspzd zspzd=new Fr_zspzd(this.dataSet11,this.myToolbar1);
    zspzd.Show();
    }窗体Fr_zspzd:
    public class Fr_zspzd : System.Windows.Forms.Form
    {
    DataSet ds1=null;
    myBaseForm.myToolbar myToolbar1;
                      ...........
              public Fr_zspzd(DataSet ds,myBaseForm.myToolbar myToolbar)  //构造函数
    {
    ds1=ds;
    myToolbar1=myToolbar;   //把传递的信息保存下来
                                ........
                       }
              private void Fr_zspzd_Load(object sender, System.EventArgs e)
    {
                                //函数中就可以使用了
                                //传递的值是和第一个页面是同步的
                       }也可以用属性传:
    private void button5_Click(object sender, System.EventArgs e)
    {
    WindowsApplication1.Form2 f2 = new Form2();
    f2.MdiParent=this;
    f2.Show();
    }//-----------------------------------------------
    public class Form2 : System.Windows.Forms.Form
    {
    private Form1 fm1;
    public Form1 Fm1
    {
    get{return fm1;}
    set{fm1=value;}
    }