none
[求助]C#的Form 数据传递的问题 RRS feed

  • 问题

  • 产品入库的时候,有个入库单,我填写入库单时,希望从产品名称表中取得产品的信息

    所以 在入库单上点击 出现一个新的窗体,里面我选择好产品名称,然后确定的时候,希望把这些值传递给前面一个入库单窗体,求助具体怎么做的。谢谢指点


    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年9月12日 10:43

答案

  • 你好!

    通过设置访问窗体的公用属性,如下示例:

    // 主窗体
    public class MainForm : Form
    {
      public MainForm()
      {
        using (SelectProductForm f = new SelectProductForm())
        {
          if (f.ShowDialog() == DialogResult.OK)
          {
            Product value = f.SelectProduct;
          }
        }
      }
    }
    
    // 选择产品窗体
    public class SelectProductForm : Form
    {
      public Product SelectProduct; 
      public SelectProductForm()
      {
      }
      // ....
    }
    
    // 产品类
    public class Product
    {
      public string Id { get; set; }
      public string Name { get; set; }
      // ....
    }
    
    另外也可以在子窗体中使用构造函数将主窗体传递给子窗体或使用自定义事件的方式。


    知识改变命运,奋斗成就人生!
    2010年9月13日 2:10
    版主

全部回复

  • 你好

        其实方法满多的。你的问题属于表单设计的问题。BS程序和CS程序,或者说WinForm和WebForm是有差别的。你希望在产品入库前,能够弹出一个窗体可以选择产品信息,然后再入库,但是这个新弹出的窗体不太容易把变量传给之前的窗体。

        因此,你最好不要弹出一个窗体Form,而是弹出一个图层DIV,图层还是属于之前那个窗体,所以,不用传变量,直接赋值就行,入库时使用。这个图层DIV,在加载页面时,需要初始化,并且隐藏,需要时再显示出来,供人选择产品信息。

        或是把产品信息,放在一个ASP.NET控件里,比如DropDownList里,直接选择好了。


    1+1=The World >>> BLOG=http://blog.csdn.net/liuning800203 >>> Email=liuning800203@hotmail.com
    2010年9月13日 1:05
  • 谢谢,我用的是WinForm,抱歉,我没有描述清楚。
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年9月13日 2:02
  • 你好!

    通过设置访问窗体的公用属性,如下示例:

    // 主窗体
    public class MainForm : Form
    {
      public MainForm()
      {
        using (SelectProductForm f = new SelectProductForm())
        {
          if (f.ShowDialog() == DialogResult.OK)
          {
            Product value = f.SelectProduct;
          }
        }
      }
    }
    
    // 选择产品窗体
    public class SelectProductForm : Form
    {
      public Product SelectProduct; 
      public SelectProductForm()
      {
      }
      // ....
    }
    
    // 产品类
    public class Product
    {
      public string Id { get; set; }
      public string Name { get; set; }
      // ....
    }
    
    另外也可以在子窗体中使用构造函数将主窗体传递给子窗体或使用自定义事件的方式。


    知识改变命运,奋斗成就人生!
    2010年9月13日 2:10
    版主
  • 感谢版主的细致解答。
    C#初学者,所以提的问题对各位前辈朋友来说可能很简单,也可能问法也不对,非常期待大家的回答……
    2010年9月17日 11:12