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

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

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

他のフォームからの呼び出し


(過去ログ 5 を表示中)

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

■5404 / inTopicNo.1)  他のフォームからの呼び出し
  
□投稿者/ kazu 二等兵(3回)-(2006/08/10(Thu) 14:38:56)

分類:[C#] 


分類:[C#] 

どうも、VBのプログラムをC#に書き換えているものです。

今回質問させていただきたい内容は"フォームAで作った関数をフォームBで呼び出す方法"です。

1.フォームA(ラベルとボタンを設置)とフォームB(ボタンを設置)を用意する。
2.フォームAに設置したボタンを押すとフォームBが呼び出される。
3.フォームBのボタンを押すと、フォームAの関数を呼び出す。

あまり具体的ではないのですが、回答よろしくお願いします。

0
引用返信 編集キー/
■5405 / inTopicNo.2)  Re[1]: 他のフォームからの呼び出し
□投稿者/ なおこ(・∀・) 二等兵(11回)-(2006/08/10(Thu) 15:09:47)
なおこ(・∀・) さんの Web サイト

分類:[C#] 

お世話になります。

No5404に返信(kazuさんの記事)
> 2.フォームAに設置したボタンを押すとフォームBが呼び出される。
ここの呼び出しは ShowDialog でしょうか。

> 3.フォームBのボタンを押すと、フォームAの関数を呼び出す。
ShowDialog でしたら、
Me.Owner プロパティで 自分を起動した画面(フォームA)の参照をとる事は可能ですが...

0
引用返信 編集キー/
■5407 / inTopicNo.3)  Re[1]: 他のフォームからの呼び出し
□投稿者/ 魔界の仮面弁士 少尉(123回)-(2006/08/10(Thu) 15:34:32)

分類:[C#] 

> 1.フォームA(ラベルとボタンを設置)とフォームB(ボタンを設置)を用意する。
> 2.フォームAに設置したボタンを押すとフォームBが呼び出される。
> 3.フォームBのボタンを押すと、フォームAの関数を呼び出す。

★案 1 ★ イベントを公開する。

//-------- Form1 (呼び出す側) --------
public partial class Form1 : Form
{
public Form1() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e)
{
using (Form2 dialog = new Form2())
{
dialog.ButtonClicked += new EventHandler(dialog_ButtonClicked);
dialog.ShowDialog();
}
}

void dialog_ButtonClicked(object sender, EventArgs e)
{
MessageBox.Show("Form1 内のメソッド");
}
}


//-------- Form2 (呼び出される側) --------
public partial class Form2 : Form
{
public Form2() { InitializeComponent(); }

public event EventHandler ButtonClicked;
private void button1_Click(object sender, EventArgs e)
{
if (ButtonClicked != null)
ButtonClicked(sender, e);
}
}



★案 2 ★ デリゲートを渡す。

//-------- Form1 (呼び出す側) --------
public partial class Form1 : Form
{
public Form1() { InitializeComponent(); }
private void OnButtonClicked()
{
MessageBox.Show("Form1 内のメソッド");
}
private void button1_Click(object sender, EventArgs e)
{
using (Form2 dialog = new Form2())
{
dialog.ShowDialog(OnButtonClicked);
}
}
}


//-------- Form2 (呼び出される側) --------
public partial class Form2 : Form
{
public Form2() { InitializeComponent(); }

public delegate void ButtonClicked();
private ButtonClicked OnButtonClicked;
public DialogResult ShowDialog(ButtonClicked function)
{
OnButtonClicked = function;
return base.ShowDialog();
}
private void button1_Click(object sender, EventArgs e)
{
if (OnButtonClicked != null)
OnButtonClicked();
}
}


0
引用返信 編集キー/
■5409 / inTopicNo.4)  Re[2]: 他のフォームからの呼び出し
□投稿者/ kazu 二等兵(5回)-(2006/08/10(Thu) 16:02:40)

分類:[C#] 

返信ありがとうございます。

今はShowDialogです。Me.Ownerプロパティですが、調べてもよくわかりません。
例としてはどのような使い方(形)がありますか??

返信お待ちしております。

0
引用返信 編集キー/
■5410 / inTopicNo.5)  Re[2]: 他のフォームからの呼び出し
□投稿者/ はいこーん 曹長(93回)-(2006/08/10(Thu) 17:08:26)

分類:[C#] 

No5405に返信(なおこ(・∀・)さんの記事)
> ShowDialog でしたら、
別にShowメソッドでも取れますが。

> Me.Owner プロパティで 自分を起動した画面(フォームA)の参照をとる事は可能ですが...
可能ですが、お勧めできない、と。

0
引用返信 編集キー/
■5420 / inTopicNo.6)  Re[2]: 他のフォームからの呼び出し
□投稿者/ kazu 二等兵(6回)-(2006/08/10(Thu) 20:32:37)

分類:[C#] 

魔界の仮面弁士さん>

ありがとうございます。問題が解決しました。ほんと助かりました。

はいこーんさん>

ご意見ありがとうございます。勉強になります!


解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -