• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Visual C# .NET)

C#で競馬ゲームを作る際の値の受け渡し方法について

このQ&Aのポイント
  • C#で競馬ゲームの開発をしていますが、馬の選択結果を他のフォームに渡す方法がわかりません。
  • 現在、C#を使って競馬ゲームのプログラミングをしています。タイトル画面から馬を選択するフォームまでは問題ないのですが、選択した馬の情報をレース画面に渡す方法が分かりません。
  • C#のプログラムで競馬ゲームを作っていますが、馬の情報をフォーム間で受け渡す方法がわかりません。どなたかアドバイスをいただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

いろいろなやり方があると思いますが、簡単な方法を1つ書きます。 static void Main() {  Application.Run(new Form1());    Form2 form2 = new Form2();  Application.Run(form2);    Form3 form3 = new Form3();  form3.setForm2(form2); //Form2への参照をセットするメソッドを定義しておく  Application.Run(form3); }

marudush
質問者

お礼

gimmickさん、あけましておめでとうございます。 早々にお返事を下さったのにここまでお礼を言うのが 遅くなってしまいまして本当に申し訳ありませんでした。 gimmickさんのアドバイスを参考にさせて頂いた結果、無事に値の受け渡しに成功しました^^ 参照に関する事をもっと勉強します! 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Visual C# 2008 Express Editionで実行するとDOS窓が出る

    私はC#でフォームプログラミングを勉強しようと思い、「Visual C# 2008 Express Edition」をダウンロードして、取り合えずウィンドウを作るだけの簡単なプログラムを実行してみたのですが、ウィンドウと同時に黒い窓(DOS窓というのでしょうか)が現れてしまいます。 作成したアプリケーションデータを実行しても、やはり黒い画面が出てしまい困っています。 本に掲載されていたコードをウィンドウタイトルを変えて、そのままビルドしただけですし、本に付いてきたCD-ROMの中の同じサンプルプログラムのアプリケーションデータを実行しても、黒い画面は現れません。何か方法に誤りがあるのでしょうか、分かる方がいたら教えて頂きたいのですが、下がコードです。 using System; using System.Drawing; using System.Windows.Forms; public class Test : Form { protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); } static void Main() { Form form = new Test(); form.Text = "ウィンドウタイトル"; form.ClientSize = new Size(600, 400); form.BackColor = Color.FromArgb(0xff, 0xff, 0xff); Application.Run(form); } } 参照設定には、 System System.Drawing System.Windows.Forms を含めています。

  • c#のプログラムについて。

    c#のプログラムについて。 お世話になります。 c#初心者です。 下記の様なコードを記述してますが、 「 Form1.Button1.Visible == false;」の部分で 「'WindowsFormApplication1.Form1'にButton1'の定義がありません。」 と言うエラーが出てしまいます。 どの様に定義して良いのかが分からず、悩んでいます。 どなたかお教え頂きたく宜しくお願い致します。        記 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication3 { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); string result = System.Environment.MachineName; if (result == "xxxxxxx") { Form1.Button1.Visible == false; } } } }

  • C#

    form2で入力した文字を form1で表示させたいのですが、上手くいきません。プログラムの(文字制限の為)一部だけ のせます。アドバイス よろしくお願いします。 まず、form1 public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MenuItem menuItem2; private System.Windows.Forms.Label label1; private Form2 form2; /// <summary> /// 必要なデザイナ変数です。 /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); form2= new Form2(); label1.Text=string.Format("{0}",form2.s); // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // } static void Main() { Application.Run(new Form1()); } private void menuItem2_Click(object sender, System.EventArgs e) { if (form2.ShowDialog(this) == DialogResult.OK) this.Refresh(); } } 次にform2です private void button1_Click(object sender, System.EventArgs e) { string s; s=(string)textBox1.Text; } public string s { get { return s; } }

  • C# 親フォームで指定した値を子フォームで表示する

    表題の件がうまくできず、困っています。 やりたいことは 親フォームのリストボックスで選択した インデックス番号をshouDialog()で立ち上げた子フォーム側の textBoxに表示したいんですが、 何も表示されず困っています。 namespace test { public partial class Form1 : Form { //リスト変数 public string listChoise; [STAThreadAttribute] static void Main() { Application.Run(new Form1()); } public Form1() { InitializeComponent(); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { listChoise = listBox1.SelectedIndex.ToString(); MessageBox.Show(listChoise);//←ここでは値がでます }     private void button1_Click(object sender, EventArgs e) { //子フォームを立ち上げる Form2 form = new Form2(); form.ShowDialog(); } } } ↓Form2クラス namespace test { public partial class Form2 : Form { public Form2() { InitializeComponent(); //リスト選択変数 Form1 list = new Form1(); textBox2.Text = list.listChoise; } } } この二つのクラスです。 とくにエラーはありません。 ちなみに >>>//リスト変数 >>>public string listChoise; の部分を public string listChose = "aaaaa"; としておくと、 子フォームのテキストボックスに"aaaaa"と表示されているようなんですが、 >>>listChoise = listBox1.SelectedIndex.ToString(); の値がちゃんと子フォームの方で受け取れていないようです。 結果はなにもひょうじされません。 子フォームの方で、 MessageBox.Show("listChoise");をしても 何も表示されません。 どんな原因が考えられますでしょうか。 よろしくお願いします。 環境:visualC# 2008 Express Edition

  • OutLookのメール受信通知 (C#)

    教えてください。C#の勉強中でわからないところがあります。 [環境] C# 2.0 windowsXP Outlook2003 [内容] アプリケーションを起動後、 Outlookでメールを受信したら、アプリケーションでFormの表示のラベルを変更したいのでが、うまくいきません。教えてくださいませ。 ちなみに、下記のソースはMessageBoxで作成したものです。 MessageBoxだとうまくいくのですが・・・ using System; using System.Windows.Forms; using OutLook = Microsoft.Office.Interop.Outlook; [ソース] using System; using System.Windows.Forms; using OutLook = Microsoft.Office.Interop.Outlook; [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMessage());  MessageBox.Show("待機中"); MessageStand(); } /// <summary> /// OutLook待機処理 /// </summary> private static void OneSightMessageStand() { OutLook.ApplicationClass outLookApp = new OutLook.ApplicationClass(); outLookApp.NewMailEx += new OutLook.ApplicationEvents_11_NewMailExEventHandler(outLookApp_NewMailEx); } /// <summary> /// イベント処理 /// </summary> private static void outLookApp_NewMailEx(string EntryIDCollection) { MessageBox.Show("受信しました。" + EntryIDCollection, "NOTE", MessageBoxButtons.OK); # 通常ならメッセージボックスではなくイベントが発生したら、Formのラベルにメッセージを表示したい。 frmMessage objfm = new frmMessage(); objfm.label.txt = "受信しました。"; }

  • Visual c# スレッド

    プログラム初心者です。 Visual c#にてスレッド関数を使ったプログラムを見よう見まねで 作りました。 スタートボタンを押すとピクチャーボックスの位置が 左から右へ移動し、ストップボタンを押すと止まる。 ピクチャーボックスの位置をテキストボックスに表示する。 というプログラムのつもりです。 デバックの状態でスタートボタンを押すとエラーメッセージが出て テキストボックスに位置を書き込むの関数のところが緑色にハイライトされます。エラーの内容は「有効でないスレッド間の操作」とありますが、どうしたら良いのか分かりません。 エラーの直し方を教えてください。 プログラムコードは以下です。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; namespace bit_map_08._1._ { public partial class Form1 : Form { private Thread thread; static private int Position = 0; static private int i; static bool BtnOnFig; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { thread = new System.Threading.Thread(newSystem.Threading.ThreadStart(MainThread)); thread.Start(); } private void PointMove() { if (i < 300) { i = i + 1; Position = Position + i; textBox1.Text = Convert.ToString(Position); pictureBox1.Left = (Position); } if (i == 300) { i = 0; } } private void MainThread() { while( true ) { Thread.Sleep(100); if (BtnOnFig == true) { PointMove(); } } } private void button1_Click(object sender, EventArgs e) { BtnOnFig = true; } private void button2_Click(object sender, EventArgs e) { BtnOnFig = false; } } }

  • Visual Studio 2017C#

    下記のVisual Studio 2017 C# 19行目のXの定義がありません。 と出ました。 11行目で定義していると思うのですけど…。 どういうことなのか教えてください。 ご多忙のところ恐れ入りますが、ご回答のほどよろしくお願いします。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace jump25 { class Test { public int x = 10; } class Program { public static void Main(string[] args) { Test obj = new Test(); int y = object.x; Console.WriteLine(y); } } }

  • JFileChooserでフリーズ

    WinXP SP2 Java 1.5.0_03 JFileChooserを使用するとプログラムが中断されます。 下のようなプログラムでさえです。 public static void main(String[] args) {   JFileChooser fc = new JFileChooser(); } FileDialogならファイル選択画面がでます。 解決方法分かりませんか?

  • なぜForm型にキャストするのでしょう?

    using System; using System.Drawing; using System.Windows.Forms; class PaintHello { public static void Main() { Form form = new Form(); form.Text = "Paint Hello"; form.BackColor = Color.White; form.Paint += new PaintEventHandler(MyPaintHandler); Application.Run(form); } static void MyPaintHandler(object objSender,PaintEventArgs pea) { Form form = (Form)objSender;//←この部分が分かりません。 Graphics grfx = pea.Graphics; grfx.DrawString("Hello,world!", form.Font, Brushes.Black, 0, 0); } } C#の勉強をしているのですが、イベントを発生させるためにデリゲートに自分で作ったメソッドを 引数として送るというのは理解できるのですが、 このMyPaintHandlerのobject objSender という部分が、書籍の説明だと「objSenderはForm型のオブジェクトなのでキャストはうまくいく」 と書かれています。 object型というのを調べるとSystem名前空間にObjectというクラスがあるのですが、これはすべてのクラスのルートであり、、、とMSDNに書かれていて、なぜForm型と言えるのかわかりません。 そもそもこのキャストはなぜ必要なのでしょう。お願いします。

  • Cで多様性を表現するには

    こんにちは、あっちこっちとウェブを検索しましたが これと言った答えが見つからないので書かせていただ きます。 C言語で多様性を表現するにはどのようにすればいいで しょうか?関数ポインタを使用すると出来そうだと言 うとこまでは理解したのですが・・・ 以下にJavaで書いたものをCでどうやって表現したら 良いかご教授ください。また、参考になるポインタな どもあれば宜しくお願いします。 public interface MoverIF{  public void run(); } public class Car implements MoverIF{  public Car(){}  public void run(){   System.out.println("Car run");  } } public class Dog implements MoverIF{  public Dog(){}  public void run(){   System.out.println("Dog run");  }  public static void main(String arg){   MoverIF mi[] = new MoverIF[2];   mi[0] = new Dog();   mi[1] = new Car(); for(int i=0;i<2;i++){ mi[i].run();  } }