コンストラクタの引数について – プログラミング – Home

コンストラクタの引数について
 
通知
すべてクリア

[解決済] コンストラクタの引数について


C#初心者
 C#初心者
(@C#初心者)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

お世話になります。

環境はVisual studio.NET 2005 C#

C#を初めて1週間足らずの初心者です。

前回はView(C#)とDocument(C++)での関連性について伺いまして皆様の
おかげでやっと理解することが出来ました。

現在、サンプルプログラムを作成していて1点質問があります。

今回もView(C#)、Document(C++)にて作成しております。フォーム1か
らフォーム2を呼ぶ際にフォーム1のDocumentを引数で渡してフォーム
2のコンストラクタでフォーム1のDocumentをもらって参照しているの
ですが当然のことながらフォーム2のコンストラクタ内でしかDocumentが
参照できません。

やりたいことはフォーム2のコンストラクタ内とフォーム2の別のイベン
ト内(ボタン押下時等)でフォーム1のDocumentを参照したいのです。

何か上手い方法があればご教授お願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

Form2のメンバを追加し、コンストラクタで代入。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...日本語ヘンだ orz

Form2 に Document型のメンバを追加し、
コンストラクタで代入/各メソッドで参照。


返信引用
C#初心者
 C#初心者
(@C#初心者)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

επιστημηさん

さっそくの回答ありがとうございます。助かります。

現在はフォーム1からフォーム2を呼ぶさいに

form1内(form1.cs)--------------------------------------

form2 form2 = new form2(form1document)

form2.ShowDialog();

-------------------------------------------------------

でform2を表示させて

form2内(form2.cs)--------------------------------------

form2のコンストラクタの手前で

private Form2Document form2document

としてform2用のDocumentを定義

コンストラクタで

public form2(Form1Document form1document)

としてform1のDocumentを受け取る

コンストラクタのInitializeComponent()の後に

form2document = new Form2Document(form1document)

これだとコンストラクタ内でしかform1documentが参照できませんが

>>Form2 に Document型のメンバを追加し、
>>コンストラクタで代入/各メソッドで参照。

上記の記述をする場合はどこにどのように記述すれば各メソッドで参
照出来るのでしょうか?

無知なあまりにすみません。


返信引用
C#初心者
 C#初心者
(@C#初心者)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

続きになりますが

>>form2のコンストラクタの手前で
>>private Form2Document form2document

private Form2Document form2document;
private Form1Document form1document;

として

private Form1Document form1document;

を定義したところ各メソッドから参照できるようになりましたが

form1document.Setdata(引数)

form1のDocumentに定義している関数にアクセスしようとした際に

追加情報:オブジェクト参照がオブジェクト インスタンスに設定されていません

とエラーになりました。何か定義が抜けているのでしょうか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

class Form2 : Form { // Form2 に
private Form1Document form1document; // Document型のメンバを追加し、

public Form2(Form1Document doc) {
form1document = doc; // コンストラクタで代入
}

public void なにかしら() {
form1document.SetData(...); //各メソッドで参照。
}
}

void どこか() {
form2 form2 = new form2(form1document);
form2.ShowDialog();
}

こんだけのことでしょ?
なにがわからんかわからんです。


返信引用
C#初心者
 C#初心者
(@C#初心者)
ゲスト
結合: 22年前
投稿: 29
Topic starter  

επιστημηさん

分かりやすい説明本当にありがとうございます。

Document型のメンバを追加しただけでコンストラクタでの代入方法を
間違えていました。上記のコード通りに記述したところ上手く参照す
ることが出来ました!本当に感謝です!

確かに今のままでは何が分からないかも分からない状況でしたのでも
っと知識を身につけてから組んで行きたいと思います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました