2012-10-12 82 views
0

今天我解决了一个问题,在C#winform程序中。将数据从一种表单传递到另一种表单

如果有表A A表B B;形式B具有一个文本框(只需要读)

形式的这样的代码:

B b = new B("FormB"); 
b.Show(); 

的FormB这样的代码:

Situation1:

public B(string str) 
{ 
    this.textbox1.text = str; 

    this.textbox1.Enable = false; 
} 

我将该程序部署到客户服务器,但textbox1.text = ""没有任何价值,但可在我的本地计算机上运行。

我试试这个:

Situation2:

public B(string str) 
{ 
    this.textbox1.text = str; 

    this.textbox1.ReadOnly = true;   
} 

然后texbox1.text = "FormB";它在我的本地计算机和客户服务器。

关键和重要的问题是,为什么情境1可以工作我的本地计算机不能在客户服务器中工作?

有人可以说这是为什么吗?

+0

,你必须初始化你formB的对象一些样品 – JSJ

+0

公共B(字符串str){ 在InitializeComponent (); this.textbox1.text = str; this.textbox1.Enable = false; } –

回答

2

让我看看,如果我理解正确的话,你会问,为什么在TextBox文本当您使用ReadOnly = trueEnabled = false更新?


如果是这样,我想这是设计。

从MSDN:TextBoxBase.ReadOnly Property

当该属性被设置为真时,控制的内容不能被 通过在用户运行时改变。 将此属性设置为true时, 仍可以在代码中设置Text属性的值。您可以使用此 功能而不是禁用启用属性到 的控件允许复制内容并显示工具提示。

+0

但是,情况1可以在我的本地计算机上正常工作,而不是在客户server.how中解释此问题?因为操作系统?或运行时? –

+0

在本地环境和客户服务器环境中是否有不同版本的.Net? –

0

您需要在构造函数中有InitializeComponent() - 与空构造函数相同。

http://www.dotnetperls.com/initializecomponent

+0

调用基地也应该工作:'公共B(字符串str):base()' –

+0

@JoelEtherton是或那。 – LukeHennerley

+0

当然,我的构造函数inlcude InitializeComponent 是这样的: public B(string str) { InitializeComponent(); this.textbox1.text = str; this.textbox1.Enable = false; } –

相关问题