2012-07-17 70 views
2

我创建在C#中的SQL语句的价值,我想获得在先前的形式从一个文本框中的值:试图让一个文本框

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

我只是不确定等号后面的内容。我试过表格name.textbox name

+1

你尝试过formName.textBoxName.Text; – ThePower 2012-07-17 11:22:01

+0

是的,它没有工作,由于其保护水平:( – 2012-07-19 07:57:18

回答

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; 

,并需要通过这在下面的主要方法:

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

而且在SqlParameter的,你可以通过它是这样的:

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

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

+0

@ CHRISTOPHER MCCONVILLE - 如果这对你有帮助,你也可以赞成这一点。 :) – 2012-07-18 10:57:26

0
YourPreviousForm.YourTextBox.Text 
0

通过使用TextBoxText财产获取文本框的值。

PeriodFrom.Value =PrevForm.TextBox.Text; 

正如你说的,有没有accessbile由于保护级别,你需要从protected对形式的访问修饰符工作public,以便它可以访问。

+0

现在出现一个错误,由于其保护级别无法访问 – 2012-07-17 11:27:43

+0

更改您的访问修饰符为公开,所以它可以访问... – 2012-07-17 11:29:09

0

如果你的文本框是公开的表格上声明,那么你将能够从与它创建的范围内访问其属性。

PeriodFrom.Value = otherForm.TextBoxName.Text; 

如果“之前的”表单对象不可用给你,那么你将不得不检索这个值并将它作为参数传递给你的新表单(或者其他类型的东西)。如果您需要帮助,请提供更多代码/详情。

+0

你是正确的davenewza,即时获取错误现在当我运行它,说文本框是无法访问,由于其保护水平 – 2012-07-17 11:29:40

+0

您需要进入您的窗体的设计视图,找到控制,然后将其修改器属性从私有/保护公共/内部。 – davenewza 2012-07-17 11:32:57

+0

请注意从设计的角度来看,这个解决方案并不是很好,因为它会导致紧密的耦合。你应该考虑在你的表单中暴露一个自定义属性,它返回适当的值(而不是公开实际的文本框)。 – davenewza 2012-07-17 11:39:27

0

您的文本的修改器属性更改为公共 然后

formname.textboxname.Text

+0

将它们更改为public没有帮助:( – 2012-07-24 14:53:39

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."; 
}