私は、ユーザーが別のフォームを使ってメモを追加できるようにするプログラムを作っています。現時点では、私は1つのフォームrichtextboxで書かれたテキストをメインフォームの他のrichtextboxに移動することはできません。このようフォームリッチテキストボックスから別のフォーム上の別のフォームにテキストを移動するC#
おかげ
私は、ユーザーが別のフォームを使ってメモを追加できるようにするプログラムを作っています。現時点では、私は1つのフォームrichtextboxで書かれたテキストをメインフォームの他のrichtextboxに移動することはできません。このようフォームリッチテキストボックスから別のフォーム上の別のフォームにテキストを移動するC#
おかげ
あなたの問題は、richtextboxコントロールの適用範囲に起因する可能性があります。フォームでコントロールを作成すると、デフォルトでWinFormsにはPrivateのスコープがあります。これは、コントロールが別のフォームのコードから直接アクセスできないことを意味します。これを回避する方法はいくつかあります。最も単純なものは、よりあなたがこの線に沿って何かを行うことができるようになるこの宣言(公開/内部)により広い範囲にそれを変更することです:
はrichTextBox1.Text = Form2.richTextBox1.Text;
*これはあなたのコードをForm1のとであると仮定し、あなたの2番目のフォームの名前はForm2です。明らかにそれはそれに応じて変更する必要があります。
これは、このフォームに含まれているコントロールをプログラムの他のセクションで編集できるようになる可能性があるため、適切な方法ではありません。情報をフォームに渡す理想的なソリューションは、コンストラクター、適切なスコープのあるメソッド、適切なスコープ付きプロパティー、場合によっては情報の種類や変更可能な時期、使用するイベントによって異なります。
具体的なケースに関する詳細があまり知られていない場合は、これが最も簡単なケースであるため、メソッドを使用することをおすすめします。
public void UpdateText(string value) {
richTextBox1.Text = value;
}
これにより、他のフォームとコントロールがこのメソッドを呼び出して、richTextBoxのテキストを更新できるようになります。
これらの例は実動コードでは使用しないでください(クロススレッディングの問題やデータの検証方法は示しません)。学習の練習。
助けてください:
richTextBox1.Text = richTextBox2.Text;
をそして、あなたは、テキストを追加したい場合:
richTextBox1.Text += richTextBox2.Text;
あなたができる新しいフォームに値を移動する場合
public Form2(string text)
{
textbox1.Text = text;
}
新しいフォームの
Constructor
を使用してください
し、新しいフォームを使用すると、新しいフォームでProperty
を使用することができ、現在のフォームに値を返すことをしたい場合:
public string Value
{
get
{
return textbox1.Text;
}
}
と、使用中:
using (var instance = new Form2())
{
instance.Show();
returnValue = instance.Value;
}
私はあなたの新しいフォームを呼び出していることを前提としていメインフォームから。この場合、インスタンスを取得するために送信者を使用するか、またはParentプロパティを介して他のフォームを参照することができます。また、他のフォームが別の子である場合はその子を参照できます。