- PR -

C#子フォームおよびクラスより親フォームの背景色の変更

投稿者投稿内容
Fukudome
会議室デビュー日: 2005/07/21
投稿数: 9
投稿日時: 2005-07-26 17:06
又質問させて頂きます。
親フォームにて
private void text1_Click(object sender, System.EventArgs e)
{
  int iRet;
  //mainclassの参照ポインタを設定
  mainclass.f1 = this;
  frmEntry011sub1 f2 = new frmEntry011sub1();
  f2.Show();
}
にて子フォームを呼び出しています。
子フォームにて
public frmEntry011 f1;
private void frmEntry011sub1_Load(object sender, System.EventArgs e)
{
 f1.txt1.BackColor = Color.MediumSeaGreen;
}

とした場合エラーになってしまいます。
テキストの場合
public static frmEntry011 Form1Instance
{
 get
 {
  return _form1Instance;
 }
 set
 {
  _form1Instance = value;
 }
}

//TextBoxを取得、設定するためのプロパティ
public string TextBoxText1
{
 get
 {
  return text1.Text;
 }
 set
 {
  text1.Text = value;
 }
}
を親フォームに設定し
frmEntry011.Form1Instance.TextBoxText1 = "あああ"
を子フォームに設定することで
子フォームから親フォームのテキストに"あああ"を代入する事が出来たのですが
子フォームから親フォームのテキストの背景色を変更したい場合
どの様にすれば実現出来ますでしょうか?

親フォームに
public int SisikiColor()
{
this.text1.BackColor = MediumSeaGreen;
}
と記述し
子フォームから SisikiColor()を呼んでみたのですが
コントロールのイベント等フォームの持っているイベントでしか
有効にならない様でエラーは無く通るのですが
色は変わらないです。

分かりにくいと思いますが
教えていただけると幸いです。

vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2005-07-26 17:32
引用:

子フォームにて
public frmEntry011 f1;
private void frmEntry011sub1_Load(object sender, System.EventArgs e)
{
 f1.txt1.BackColor = Color.MediumSeaGreen;
}

とした場合エラーになってしまいます。


まず、具体的にどんなエラーが発生するのでしょうか。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-07-26 17:35
f1 ってインスタンス化してますか?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Fukudome
会議室デビュー日: 2005/07/21
投稿数: 9
投稿日時: 2005-07-26 17:47
早速のお返事ありがとうございます。

vincent様
型または名前空間名'Color'が見つかりませんでした。ディレクティブを使うか
アセンブリ参照を使ってくださいです。

じゃんぬてっと様
インスタンス化してます。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2005-07-26 17:58
NullReferenceExceptionかと予想してましたが…そちらでしたか。

Colorsを完全限定名System.Drawing.Colorsで記述するか
using System.Drawingステートメントを使ってください。
あと、コンパイル時にSystem.Drawing.dllを参照するようにしてください。

続きはビルドができてから。
Fukudome
会議室デビュー日: 2005/07/21
投稿数: 9
投稿日時: 2005-07-26 18:05
vincentさん
お返事ありがとうございます。
 Colorsを完全限定名System.Drawing.Colorsで記述するか
 using System.Drawingステートメントを使ってください。
 あと、コンパイル時にSystem.Drawing.dllを参照するようにしてください。
をやりました。
その後
vincent様予想の
NullReferenceExceptionが出てしましました。
これはどの様な意味でどうすれば良いでしょうか??
何度もすいません。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2005-07-26 18:16
NullReferenceExceptionが発生するということは

f1.txt1.BackColor = Color.MediumSeaGreen;

のf1もしくはtxt1の値がnullなので、ステートメントを
正しく実行できません、ということです。

子フォームを作ってから表示するまでのコードは
frmEntry011sub1 f2 = new frmEntry011sub1();
f2.Show();

の2行ですが、f2のフィールド
public frmEntry011 f1;
のf1にはいつ参照を設定していますか?
Fukudome
会議室デビュー日: 2005/07/21
投稿数: 9
投稿日時: 2005-07-28 09:36
vincent様
おはようございます。
お返事遅くなりすいませんでした。
namespace DMESentry011
{
  /// <summary>
  /// Form1 の概要の説明です。
  /// </summary>
  public class frmEntry011sub1 : System.Windows.Forms.Form
  {
//frmEntry011への参照ポインタ
public frmEntry011 f1;


で参照の設定をしています。
そしてLode時に
BackColorの設定をしてます。

スキルアップ/キャリアアップ(JOB@IT)