讓我通過說我對C#非常新,並將一個程序從VB.net轉換爲C#來做序。如何捕獲文本框的值並將其用作變量?
我在Visual Studio 2012
工作和運行SQL Server 2008R2
OK,所以我有一個窗體Form1。在這個表單上是用戶可以填寫的文本框TextBox1。現在我想使用文本框中的信息作爲變量來從數據庫中提取信息並在不同的表單上填充文本框(textbox2)(form2)這是我當前在表單2上使用的代碼
private void form2_Load(object sender, EventArgs e)
{
string Name = Form1.TextBox1.Text;
this.TBMainTableAdapter.FillBy(Name);
}
private void form2_Load(object sender, EventArgs e)
{
string Name = Form1.TextBox1.Text;
this.TBMainTableAdapter.FillBy(Name);
}
我也嘗試加載它是這樣的:
this.TBMainTableAdapter.FillBy(Form1.TextBox1.Text);
這些都讓我「對象引用需要非靜態字段...錯誤
在VB.Net這是很容易,我把它編碼爲這樣,並且它完美地工作。
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.TBMainTableAdapter.FillBy(Me.ProjectDataset.TBName, TextBoxName.Text)
End Sub
在代碼背後是否存在缺少的東西?我試圖從
public System.Windows.Forms.TextBox TextBox1;
文本框
改變代碼
public static System.Windows.Forms.TextBox TextBox1;
雖然這清除了上拉變量的錯誤,它的代碼 - 扔了一堆更多的錯誤在表單1後面,「無法訪問一個實例,給它一個名稱」錯誤
是否值得更改代碼背後的所有錯誤。更重要的是這樣做的正確方法?
OK,所以我說這2下
public partial class Form1 : Form
Form1 form1;
public Form2(Form1 frm)
{
form1 = frm;
}
Form2 frm = new Form1(this);
即時得到「方法必須有一個返回類型錯誤」,在「公共窗體2(Form1的FRM)」行 和 「錯誤命名空間.Form1沒有一個構造函數需要1個參數「在Form2 frm = new Form1(this);行
此外,如果我把getter屬性放在Form1中,我得到一個有關聲明2個具有相同名稱的對象的錯誤。廣東話地方找到一個聲明TextBox1中除了在其背後的代碼的末尾爲
public System.Windows.Forms.TextBox TxtBox1
聲明後面的代碼,如果我把下面的消氣,我得到一個唯一的任務,調用等可用作語句錯誤
你不想讓你的'TextBox'靜態。如果你不知道自己在做什麼,那麼不要改變你的代碼。它是自動生成的,並且您的更改可能會在長期運行中丟失 – bas 2013-03-02 22:30:37
您的代碼不顯示Form1的聲明,但我認爲Form1是表單的類名(例如「public partial class Form1:Form」)。如果是這樣,那麼Form1.TextBox1將不起作用。您不能使用類名嘗試訪問類實例的成員。 – mbeckish 2013-03-02 22:32:06
MuhammadHani,這不會工作,因爲TextBox1是在一個不同的形式比我打電話給它。 – 2013-03-02 22:34:16