使用Model访问winform c#中的userControl值

时间:2013-05-26 01:06:28

标签: c# winforms user-controls

我正在一个小型项目中工作,我正在使用主窗体中显示的userControl。我正在使用一个允许访问数据库的Model类,如下所示:

    public void InsertRoute(Route route)
    {
        string routecode = route.RouteCode.ToString();
        string vehiclecode = route.VehicleCode.ToString();
        string firsstudentname = route.FirstStudentName.ToString();


        using (SqlCommand cmd = new SqlCommand("InsertRoute2", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(new SqlParameter("@RouteCode", routecode));
            cmd.Parameters.Add(new SqlParameter("@VehicleCode", vehiclecode));
            cmd.Parameters.Add(new SqlParameter("@FirstStudentName", firsstudentname));


            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
    }

然后我有一个名为UCCreateRotue的用户控件,它有几个文本框和按钮单击事件处理程序:

   private void btnCreateRoute_Click_1(object sender, EventArgs e)
    {
        UCRouteCreate form = new UCRouteCreate();
        //DialogResult dialog = form.ShowDialog();

        //if (dialog == DialogResult.OK)
        //{
            Route route = controller.CreateMovieFromText(form);
            controller.InsertRoute(route);
            //RefreshTable();
        //}

    }

然后我有一个名为route的类,如下所示

       class Route
{

    private   GlobalReach.UserControls.UCRouteCreate usrCon;
    public string RouteCode
    {
        get { return usrCon.txtRouteCode.Text ;}
        set { usrCon.txtRouteCode.Text = value ; }

    }

}

然后我在控制器中有一个方法,如下所示,执行通过sproc

完成的插入
        public Route CreateRouteFromText(UCRouteCreate form)
    {

        string routecode =form.txtRouteCode.Text.ToString();
        string vehiclecode = form.txtVehicleCode.Text.ToString();
        string firststudentname = form.txtFStudent.Text.ToString();


        Route route = new Route();
        return route;
    }

我的问题是,当我点击按钮点击代码正在工作,因为我有新行插入我的表,但有空值,即值输入为没有(如果这有任何意义)和字段,我dd不选择填写输入为NULL值..? 你可以告诉我为什么当我在我的usrControl TextBox中输入值时,我的代码中没有捕获到这个值。 提前谢谢你

1 个答案:

答案 0 :(得分:0)

按钮单击事件创建一个空表单,您已注释掉显示对话框行,因此输入仍为空(除非您将它们初始化为任何内容,但即便如此)。在CreateRouteFromText中,将表单值分配给局部变量,然后创建一个空的Route对象并将其传递回insert方法。所以你有空行并不奇怪。

至少应该将Route对象设置为表单所具有的内容:

public Route CreateRouteFromText(UCRouteCreate form)
{
    return new Route() 
    { 
        RouteCode = form.txtRouteCode.Text,
        VehicleCode = form.txtVehicleCode.Text,
        FirstStudentName = form.txtFStudent.Text
    }
}