私はC#を初めて使用し、プログラムをVB.netからC#に変換していると言って、この前置きをしましょう。
私はで働いてVisual Studio 2012
実行していますSQL Server 2008R2
OK、フォーム1があります。このフォームには、ユーザーが入力できるテキストボックスTextBox1があります。ここで、テキストボックス内の情報を変数として使用して、データベースから情報を取得し、別のフォーム(form2)にテキストボックス(textbox2)を入力します。これはフォーム2で現在使用しているコードです。
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);
「パブリックForm2(Form1 frm)」行で「メソッドには戻り型エラーが必要」が表示され、Form2で「エラーNamespace.Form1には1つの引数を取るコンストラクターがありません」が表示されます。frm= new Form1(this); ライン
また、getterプロパティをForm1に配置すると、同じ名前の2つのオブジェクトを宣言する際にエラーが発生します。TextBox1を宣言する場所を見つけることはできません。ただし、コードビハインドで宣言されているコードビハインドを除きます。
public System.Windows.Forms.TextBox TxtBox1
その下にゲッターを置くと、ステートメントエラーとして使用できる代入や呼び出しなどのみが取得されます