View(Form1)の役目は、Controllerにコントロールの値(textboxの値)を伝えること、そしてメソッド(Yno)を呼び出すこと。
フォームに追加するコードは、//の部分だけ。
Controllerクラスのメソッドを呼び出すため、インスタンスを生成して、変数に格納。
public partial class Form1 : Form
{
private Controller controller; //private変数に格納
public Form1()
{
InitializeComponent();
controller = new Controller(); //コンストラクターでインスタンス生成
}
--------------略----------------
ボタンのクリックイントに追加するのは、//の部分だけ。
textbox1の値をControllerに渡し、メソッドを呼び出す。
///の部分はおまけ、結果を別の場所で利用できるようにクリップボードにコピーしておく。
private void button1_Click(object sender, EventArgs e)
{
controller.Jcode = textBox1.Text; //コントローラーに渡す郵便番号
string gt = controller.Yno(); //メソッドの呼び出しと戻り値が入る変数
textBox2.Text = gt; //戻り値(住所)をtextboxに表示
Clipboard.SetText(gt); ///クリップボードにコピー
}
このように、フォームのコードは少なくごく簡単なものである。実行結果を示すと
Controllerはフォームから受け取った情報もとに、処理はModelに任せます。
コンソールアプリ(Model)のYubinクラスのYnoメソッドを呼び出し、結果を受け取ります。
public class Controller
{
public Controller()
{
Yubin yubin = new Yubin();
}
public string Jcode { get; set; } //フォームから受け取るプロパティJcode
public string Yno()
{
var gtcreator = new Yubin();
return gtcreator.Yno(Jcode);
}
}
以上、出来上がっているコンソールアプリ(Model)は全く変更なく、ViewとControllerとの連携がとれました。