- PR -

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

投稿者投稿内容
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-08-31 15:02
いつも拝見させて貰ってます。

VBで言うプロジェクトファイルに追加したhogehoge.bas中のMainから、Showメソッドで表示された
Form・・という流れを例にして、C#でやりたいというのが本旨です。

hogehoge.basに相当する、Mainを置けるモジュールというのがよく分からないので、コンソール
アプリをまず作って、そこのMainからForm.ShowDialog()でFormを開くしくみを考えまし
た。

以下がコンソールアプリのMain部分です。

static void Main(string[] args)
{
//
// TODO: アプリケーションを開始するコードをここに追加してください。
//
Form1 testForm = new Form1();
testForm.ShowDialog();
}

実行してみるとコンソールアプリのウィンドウが開きっぱなしで期待したような結果が得られないの
ですが

1 そもそもこの考え(コンソールアプリから起動)が間違っている
2 コンソールアプリの画面を消せばFormが見える

という事を考えてヘルプを検索して調べているのですが、思うような情報が得られません。

ご存知な方、お教えください。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-08-31 15:18
Hasumiです。

Windowsアプリケーションプロジェクトを作成して、クラスを追加して、
追加したクラスに
コード:
[STAThread]
static void Main() {
	Application.Run(new Form1());
}


を追加し、Form1からMainメッソドを削除するか、プロジェクトのプロパティで
スタートアップオブジェクトに追加したクラスを指定する。

こういうことですか?
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-08-31 15:26
コマンドラインコンパイラで

> csc /t:winexe test.cs

とターゲットをWindows実行可能ファイルとして指定してあげればいいだけです。

#VS.NETを使う場合、どのようにすれば上記指定ができるかは
 調べたことがありません。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-08-31 15:37
Hasumiです。
引用:
#VS.NETを使う場合、どのようにすれば上記指定ができるかは
 調べたことがありません。


VS.NETを使う場合は
プロジェクトのプロパティで出力の種類を「Windows アプリケーション」にするかな。
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-08-31 15:51
Hasumiさん、小野さん、ありがとうございます。

引用:

Hasumiさんの書き込み (2004-08-31 15:18) より:
Hasumiです。

Windowsアプリケーションプロジェクトを作成して、クラスを追加して、
追加したクラスに
コード:
[STAThread]
static void Main() {
	Application.Run(new Form1());
}


を追加し、Form1からMainメッソドを削除するか、プロジェクトのプロパティで
スタートアップオブジェクトに追加したクラスを指定する。

こういうことですか?



やってみました。

namespace WindowsApplication1
{
/// <summary>
/// Class1 の概要の説明です。
/// </summary>
public class Class1
{
public Class1()
{
//
// TODO: コンストラクタ ロジックをここに追加してください。
//
}
}
[STAThread]
static void Main() ※※※
{
Application.Run(new Form1());
}
}


※※※で
 クラス、デリゲート、列挙型、インターフェイス、構造体または共用体が必要です。
cs1518エラーが出ます。

何を調べればいいでしょうか?

かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-08-31 16:02
書籍を参考にいじってみました。

引用:

namespace WindowsApplication1
{
/// <summary>
/// Class1 の概要の説明です。
/// </summary>
class Class1
{
//
// TODO: コンストラクタ ロジックをここに追加してください。
//
[STAThread]
static void Main(string[] args)
{
Application.Run(new Form1());
}
}
}



今度は
 「プログラム 'program' の Main メソッドに 'class' が見つかりませんでした。」
CS1555エラーが。

センス無いな・・。自分。
Hasumi
ベテラン
会議室デビュー日: 2002/07/23
投稿数: 78
お住まい・勤務地: 神奈川・東京
投稿日時: 2004-08-31 16:07
Hasumiです。
コード:
using System;
using System.Windows.Forms;

namespace WindowsApplication1 {
  /// <summary>Class1 の概要の説明です。</summary>
  public class Class1 {
    [STAThread]
    static void Main() {
      Application.Run(new Form1());
    }
  }
}


です。

>何を調べればいいでしょうか?
MSDNでキーワードにCS1518を指定して検索
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-08-31 16:15
引用:

Hasumiさんの書き込み (2004-08-31 16:07) より:
Hasumiです。
コード:
using System;
using System.Windows.Forms;

namespace WindowsApplication1 {
  /// <summary>Class1 の概要の説明です。</summary>
  public class Class1:Form {
    [STAThread]
    static void Main() {
      Application.Run(new Class1());
    }
  }
}


です。

>何を調べればいいでしょうか?
MSDNでキーワードにCS1518を指定して検索


では?

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