C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#で他フォームから値を取得する方法について。

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■88018 / inTopicNo.1)  C#で他フォームから値を取得する方法について。
  
□投稿者/ YUU (1回)-(2018/07/30(Mon) 11:23:32)

分類:[C#] 

C#で他フォームから値を取得する方法が分かりません。

手順としては以下のようになっています。
Form1側のコンボボックス1からフルパスを選択できるようになっており
それを「fullPath」という変数に格納。

そしてそれをsenddataに移す。
ボタン1を押し、Form2を表示。
その後Form2側でGET、SETしてテキストボックス2に入れています。

そのテキストボックス2に入っているフルパスを
ツリービューの「GetDirectories(Form1側で指定したフルパス);」の中に入れたいのですが、

GetDirectories(TextBox2.Text);
GetDirectories(sendData);
GetDirectories(fullPath);

いずれにしても、nullになってしまい取得できません。
テキストボックスにさえ移せたら、そこから取得できるものと思っていたのですが出来ずにいます。
誰か原因がわかる方、構文を教えていただきたいです。

以下、関係のある構文を抜粋しました。
どうか宜しくお願い致します。


////// Form1側
Form2 fs;
fs = new Form2();
public string fullPath = "";
public void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

fullPath = ComboBox1.Text
fs.SendData = fullPath;

}
public void Button1_Click(object sender, EventArgs e)
{


try
{
fs.Show();
}
catch (Exception ex)
{
}

}


////// Form2側
private string sendData = "";
public Form1 formMain;
public string SendData
{
set
{
sendData = value;
TextBox2.Text = sendData;
}
get
{
return sendData;

}
}
public Form2()
{
InitializeComponent();
TextBox2.ReadOnly = true;

string[] Tpath = Directory.GetDirectories(Form1側で指定したフルパス);
foreach (String drive in Tpath)
{
TreeNode node = new TreeNode(drive, iconIndex, iconIndex);
node.Nodes.Add(new TreeNode());
treeView1.Nodes.Add(node);
}
}
引用返信 編集キー/
■88028 / inTopicNo.2)  Re[1]: C#で他フォームから値を取得する方法について。
□投稿者/ はまぐり (8回)-(2018/07/30(Mon) 12:50:40)
No88018 (YUU さん) に返信

Form2のコンストラクタでForm1で指定したパスを読みこもうとしてるのですよね
コンストラクタはnewされたときに処理されるものなので、Form2のコンストラクタは
Form1でパスを指定するよりも早いタイミングで実行されます、それがマズいんだと思います。

Formが表示されるときにShown イベントが起こりますので
Shown イベントのイベントハンドらでパスを読みこむ処理を行うと良いのじゃないでしょうか


引用返信 編集キー/
■88029 / inTopicNo.3)  Re[2]: C#で他フォームから値を取得する方法について。
□投稿者/ YUU (3回)-(2018/07/30(Mon) 13:11:24)
No88028 (はまぐり さん) に返信

Form2のテキストボックスにはフルパスは移せております(表示できています)が、
そのテキストボックスから取得することが出来ておりません。

>>Shown イベントのイベントハンドらでパスを読みこむ処理を行う
とはどのようにするのでしょうか?
教えていただけると幸いです。
引用返信 編集キー/
■88030 / inTopicNo.4)  Re[3]: C#で他フォームから値を取得する方法について。
□投稿者/ はまぐり (9回)-(2018/07/30(Mon) 13:45:40)
No88029 (YUU さん) に返信

イベントを捕捉する
https://dobon.net/vb/dotnet/beginner/eventhandle.html

↑こちらを参考に↓こう!

Form2()
{
	InitializeComponent();
	TextBox2.ReadOnly = true;

	Shown += (s, e) =>
	{
		string[] Tpath = Directory.GetDirectories(Form1側で指定したフルパス);
		foreach (String drive in Tpath)
		{
			TreeNode node = new TreeNode(drive, iconIndex, iconIndex);
			node.Nodes.Add(new TreeNode());
			treeView1.Nodes.Add(node);
		}
	};
}

引用返信 編集キー/
■88048 / inTopicNo.5)  Re[4]: C#で他フォームから値を取得する方法について。
□投稿者/ YUU (5回)-(2018/07/30(Mon) 22:32:11)
No88030 (はまぐり さん) に返信
無事にできました!
ありがとうございます!

回答誠にありがとうございました。
助かりました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ