- PR -

C#でForm以外のモジュールからのFormモジュールの呼び出し

投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-01 10:41
Jittaさん、iStationさん、ありがとうございます。

有難くメモらさせていただきました。

今後ともよろしくお願い致します。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-03 10:24
お世話になります。

Class.csからFormHogeを起動して、FormHoge上のボタンをクリックしてFormHoge上の
TextBoxをクリアしたいのですが、クリアのコードはClass.csに置きたいのです。。

コード:
Class
		[STAThread]
		static void Main() 
		{
			FormHoge formHoge = new FormHoge();
			Application.Run(formHoge);
		}

		public void HogeHoge( ※ここの書き方 )
		{
			///TextBox1.Text = "";
               ///Form上のTextBoxをクリアしたい
		}

Form
		private void Button_Click(object sender, System.EventArgs e)
		{
			Class.HogeHoge(Me);
		}




Class.HogeHogeの引数の書き方が分かりません(苦)

ちなみに、最初は

コード:

		public void HogeHoge( FormHoge formHoge )



と書いたのですが「型または名前空間名 'FormHoge' が見つかりませんでした」
と怒られて質問に至っています。。。

アドバイスよろしくお願いします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-09-03 11:21
脳味噌筋肉さん、こんにちは。

取り敢えずですね、ここら辺とかここら辺をよ〜く読んでみる事をお奨めします。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-09-03 11:56
Hasumiです。

HogeHogeメソッドにテキストボックスを渡せばいいのでは?

>Class.HogeHoge(Me);
MeはVBのキーワードでは。

C#でしたらここら辺もお奨め。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-03 15:37
Hasumiさん、きくちゃんさん、ありがとうございます。

教えて頂いたページから、Class.csからFormHogeを起動するしくみ(きまり)は
理解できました。

 多分・・ですけど・・自信無いですが(苦)

問題の、FormHoge上のイベントルーチンの中から自分に貼りついたコントロールにアクセスするコード
をClass.cs側に置くという事なんですが・・

よくよく考えたら、自分に貼りついたコントロールにアクセスするコードなんだから自分とこ
に置く、と考えるのが普通かなぁ?と。

うーん。。。

iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-09-03 16:14
参考にどうぞ!
コード:

// file : FormHoge.cs
// compile : csc /t:winexe /main:Class FormHoge.cs
// compile : csc /main:Class FormHoge.cs // Console Coexists

using System;
using System.Windows.Forms;
using System.ComponentModel;

public class Class
{
[STAThread]
public static void Main()
{
FormHoge formHoge = new FormHoge();
Application.Run(formHoge);
}

static public void HogeHoge(FormHoge formHoge)
{
formHoge.a.Text = "";
}
}

public class FormHoge : Form
{
public TextBox a;

public FormHoge()
{
// set up form...
Text = "FormHoge"; // title bar text
Width = 400; // form width
Height = 100; // form height
CenterToScreen(); // display center screen

// Text Box
a = new TextBox();
a.Text = "HogeHoge";
a.Dock = DockStyle.Top;
Controls.Add(a);

// Button
Button b = new Button();
b.Text = "Button";
b.Dock = DockStyle.Bottom;
b.Click += new EventHandler(clickHandler);
Controls.Add(b);

// create container for components...
components = new Container();
}

private void clickHandler(object sender, EventArgs e)
{
Class.HogeHoge(this);
}

protected override void Dispose(bool disposing)
{
if (disposing)
if (components != null)
components.Dispose(); // dispose of components...
base.Dispose(disposing);
}
private Container components; // contains components
}



[ メッセージ編集済み 編集者: iStation 編集日時 2004-09-03 19:23 ]
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-09-03 16:47
おぉ・・、ありがとうございます。

コード:
    public FormHoge() 
    {
	// set up form...
	Text = "FormHoge";	// title bar text
	Width = 400;		// form width
	Height = 100;		// form height
	CenterToScreen();	// display center screen

	// Text Box
	a=new TextBox();
	a.Text="HogeHoge";
	a.Dock = DockStyle.Top;
	Controls.Add(a);
	      



コントロールをNewするんですか!・・これって画面を作り込むとダメなんですよね?
というか試してみます。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-09-03 17:08
要点は変数と関数のスコープだと思いますけど...

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