0

これは宿題の一部だと言いたいのですが、コードを求めているわけではありません。仮想メソッドとインターフェイスを含む 2 つのサブクラスを持つ抽象基本クラスを作成する必要があります。すべてのクラスとインターフェイスを作成しましたが、GUI をテストするためのクラスの作成に行き詰まっています。サブクラスとインターフェイスを含むすべてのクラス ライブラリを参照しましたが、私の本の例では、PresentationGUI.cs という別のクラスがあります。フォームの前にクラスを作成しましたが、このクラスをフォームで「機能する」ように実装する方法がわかりません。プレゼンテーション クラスをスタートアップ プロジェクトとして設定しましたが、Windows フォームと通信させる方法がわかりません。デザイナーコード。この本では、プレゼンテーション クラスには、さまざまなクラスの名前空間への参照と共に Windows フォーム コードが生成されています。サブクラスの一部と一緒に、このプレゼンテーションクラス内で、私はこれを達成する方法に迷っています。本のコードは次のようになります (時間を節約するために短くしています)。

01  using System;                //// I get an error if I type this in
02  using System.Drawing;
03  using System.Collections.Generic;
04  using System.ComponentModel; 
05  using System.Windows.Forms;
06  using System.Data;
07  using ClubNamespace;       //// to reference the subclasses
08  using IntermuralNamespace;
09   
10  namespace PresentationGUI 
11  {
12  public class PresentationGUI : System.Windows.Forms.Form
13  {
14  private Club aClub;
15  private Intermural aIntermural;
16  private System.Windows.Forms.GroupBox groupbox1;
17  private System.Windows.Forms.Label label1;
18  //// and other Windows.Forms object oriented buttons and so-forth
19   
20  public PresentationGUI ()
21  {
22  Initialize Component ();
23  }
24  /// #Windows Designer Code to add controls
25  static void Main()
26  {
27  Application.Run(new PresentationGUI());
28  }
29  private void Presentation_Load(object sender, System.EventArgs e)
30  {
31  aClub = new Club ("ACM", "Jones", "Davis 203", "Tuesday");
32  aIntermural = new Intermural ("Winners", "Joe Smith", "Gym 3", "VolleyBall")
33  }

私の講師によると、フォームにコントロールを追加する前に、PresentationGUI クラスを作成してスタートアップとして設定すると、プライベート Systems.Windows.Forms.Label label1; が作成されます。クラス自体に、しかし私が自分のクラスを作成するときは起こりません。スタートアップ プロジェクトにした後、PresentationGUI クラスへの参照としてサブクラスを追加しました。インターフェイスも含めて、上記のコードでは省略しました (インターフェイスを使用していない本の正確なコードを使用しました)。これは、using System パーツを一番上に追加することと関係がありますか?それとも、コントロールを参照するためにプライベート Windows.Forms パーツを自分で追加する必要がありますか? または、PresentationGUI クラス ライブラリを作成するために必要な別の方法はありますか? Initialize Component() および Main() メソッドを使用してクラスを作成するにはどうすればよいですか? フォームデザインでこれを参照する必要がありますか? それとも、フォーム デザインの一部ですか? フォーム デザインの一部にするにはどうすればよいですか? すべての質問で申し訳ありませんが、答えはおそらく簡単だと思いますが、これについては私の本やオンラインにはほとんど記載されておらず、これを実装するために何をする必要があるのか​​ わかりません。お世話になりました!

4

1 に答える 1

2

StackOverflow へようこそ。これは非常に大きな質問です。通常、それらは分割する必要がありますが、この本がいかにあなたを混乱させているかを私は知っていると思います。再度投稿する前にFAQを読んでいただけると信じています。

「Initialize Component() および Main() メソッドを使用してクラスを作成するにはどうすればよいですか?どうにかしてこれをフォーム デザインで参照する必要がありますか?それともフォーム デザインの一部ですか?どうすればそれを一部にすることができますか?フォームのデザイン?」

フォームもクラスであり、System.Windows.Form から派生するだけです。通常のクラスを作成しているように聞こえます (プロジェクトを右クリックし、[新しい項目の追加] > [通常のクラスではない Windows フォーム] を選択します)。

新しいプロジェクトを作成 > Winforms > Form1 の名前を PresentationGUI に変更し、フォーム デザイナーを表示しながら、コントロールの ToolBox を展開し、GroupBox コントロールをフォームと Label コントロールにもドラッグします。

[PresentationGUI フォーム] > [コードの表示] を右クリックします。クラス コンストラクターに次のメソッドがあることがわかります。

InitializeComponent();

このメソッド名を右クリックして Goto Definition (または F12) を選択すると、ここにフォーム デザイナー コードが表示されます。これは、コントロールをフォーム サーフェスにドラッグすることによって生成されたものです。

program.cs ファイルを右クリック > コードを表示 > 次のようになります。

static void Main()
{
Application.Run(new PresentationGUI());
}

あなたが持っているその本は、このすべての知識をまとめています (デザイナーが生成したコードに部分クラスを使用していません)。

最後に、PresentationGUI フォーム コードで、Form_Load イベントを挿入します。

private void PresentationGUI_Load(object sender, System.EventArgs e)
{
aClub = new Club ("ACM", "Jones", "Davis 203", "Tuesday");
aIntermural = new Intermural ("Winners", "Joe Smith", "Gym 3", "VolleyBall")
}

プロパティ ウィンドウを使用してフォームとコントロールにイベントを追加することを好みます。たとえば、PresentationGUI をデザイン ビューで開き、F4 を押します。プロパティ ウィンドウに稲妻ボタンが表示されます。これにより、フォームに追加できるすべてのイベントが表示されます。選択したコントロール。

クラスへのコントロールの接続に関しては、仮想メソッドを含む 2 つのサブクラスとインターフェイスで、Binding を使用します。たとえば、ListBox1.DataSource = BusObjectTier.aClub;

質問の主なタイトルについてI am stuck in creating a class to test the GUI

GUI のテストを作成する必要がないように、Binding を使用します。コントロールがバインドされているビジネス ロジックをテストします。

于 2012-05-12T04:12:59.267 に答える