2

我正在 c# 中创建一个 sql 语句,并且我试图从以前表单中的文本框中获取值:

SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);
PeriodFrom.Value = 

我只是不确定等号之后是什么。我试过表格name.textbox name

4

6 回答 6

0

在表单后面的代码中,在表单类中,您可以声明一个属性:

public string TextBoxValue
{
    get
    {
        return textBoxName.Text;
    }
}

您可以将它与您的 SqlParameter 一起使用,如下所示:

    SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);

PeriodFrom.Value = FormClassName.TextBoxValue;

编辑:

这是行不通的,因为 Form 类对象不是静态的,也不会持续存在。要完成这项工作,您需要对 Program 类进行更改。您需要在 Program 类中添加一个静态数据成员,如下所示:

public static FormClassName form;

并且需要在 main 方法中传递它,如下所示:

form = new FormClassName();
Application.Run(form);

在 SQLParameter 中,您可以像这样传递它:

SqlParameter PeriodFrom = new SqlParameter("@PeriodFrom", SqlDbType.VarChar);
PeriodFrom.Value = Program.form.TextBoxValue;

我试图为您提供一种获得价值的方法,但我认为这不是一个好习惯。理想情况下,为了在表单或层之间传递值,您需要有某种机制来存储和检索值,例如上下文或会话。这不是解决方案,而是一种解决方法。如果代码因上述更改而混乱,我不承担任何责任。:)

于 2012-07-17T11:58:15.870 回答
0
YourPreviousForm.YourTextBox.Text
于 2012-07-17T11:20:53.640 回答
0

使用 的Text属性获取文本框的值TextBox

 PeriodFrom.Value =PrevForm.TextBox.Text;

正如您所说,由于保护级别,没有访问权限,您需要处理 form from protectedto的访问修饰符,public以便可以访问它。

于 2012-07-17T11:21:44.000 回答
0

然后将文本框的修饰符属性更改为 Public

formname.textboxname.Text

于 2012-07-17T11:27:15.073 回答
0
<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 


if(PreviousPage != null)
{
    if(PreviousPage.IsCrossPagePostBack == true)
    {
            PeriodFrom.Value =PrevForm.TextBox.Text;
    }
}
else
{
    PeriodFrom.Value = "Not a cross-page post.";
}
于 2012-07-17T11:28:07.367 回答
0

如果您的 TextBox 在表单上公开声明,那么您将能够从创建它的范围访问它的属性。

PeriodFrom.Value = otherForm.TextBoxName.Text;

如果您现在无法使用“以前的”表单对象,那么您将必须检索该值并将其作为参数传递给您的新表单(或类似的东西)。如果您在此处需要帮助,请提供更多代码/详细信息。

于 2012-07-17T11:25:53.063 回答