だから私はローカル文字列をc#プロジェクトの別のフォームに渡そうとしています。これは私のコードです:
フォーム1:
...
Main frm = new Main();
frm.Passvalue = usrTxt.Text;
frm.ShowDialog();
フォーム2
...
public string Username;
public string Passvalue
{
get { return Username; }
}
エラーが発生しています:
プロパティまたはインデクサー「Main.Passvalue」を「-」に割り当てることができません。読み取り専用です
私はReadOnly
として何も宣言しませんでしたが、誰がここの問題が何かを知っていますか?
セッターがないため、読み取り専用のプロパティになり、次のように変更します。
public string Passvalue
{
get { return Username; }
set { Username = value; }
}
ちなみに、Username
を公開しているので、これは少し冗長に見えます。一般に、クラスフィールドをプライベートにすることをお勧めします。
setプロパティを使用できるようにするには、setハンドラーを追加する必要があります。
public string Passvalue
{
get { return Username; }
set { Username = value; }
}
ただし、自動実装プロパティをすぐに使用する方が簡単です。
public string Username
{
get;
set;
}
あなたの財産はセッターを逃しています。次のように変更します。
public string Passvalue
{
get { return Username; }
set { Username = value; }
}
問題は、Form2.Passvalue
に対してgetterのみがあり、setterがないことです。これをForm2
に追加します:
public string Passvalue
{
get { return Username; }
set { Username = value; } // add this setter
}
プロパティにはセッターがありません。
自動実装されたゲッターとセッターに使用できるコードを次に示します。
public string Username { get; set; }
public string Passvalue { get; set; }
または、PassvalueからUserNameの値を取得および設定する場合は、次を使用できます。
public string Username { get; set; }
public string Passvalue
{
get { return Username; }
set { Username = value; }
}