2017-07-16 10 views
-8

私はonLoadイベントを持っていて、データベースからデータを取り込む変数を含んでいます。その文字列をボタンのonclickイベントに渡す必要があるため、いつでも操作を実行できるようにします。私はloadからonclickにword変数にアクセスする必要があります。OnLoadイベントの文字列をC#のClickeventに渡す方法は?

using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Linq;  
using System.Text;  
using System.Threading.Tasks;  
using System.Windows.Forms;  
using MySql.Data.MySqlClient;  
namespace WindowsFormsApplication1 
{ 
    public partial class Form2 : Form 
    { 

     public string word, alphabets; 
     public int chances, score; 

     public Form2() 
     { 
      InitializeComponent(); 
     } 

     public void Form2_Load(object sender, EventArgs e) 
     { 
      chances = 8; 
      score = 0; 
      alphabets = "abcdefghijklmnopqrstuvwxyz"; 
      Random rnd = new Random(); 
      int wordid = rnd.Next(1, 127); 
      label12.Text = chances.ToString(); 
      label13.Text = score.ToString(); 
      try 
      { 
       string myConnection1 = "datasource=localhost;port=3306;username=root;password=amit;"; 
       MySqlConnection myConn1 = new MySqlConnection(myConnection1); 
       myConn1.Open(); 
       int count = 0; 
       var cmd = new MySqlCommand(" select words from gamers.gamewords where id='" + wordid + "';", myConn1); 
       string word = (string)cmd.ExecuteScalar(); 
       int length = word.Length; 
       label4.Text = length.ToString(); 
       label7.Text = alphabets; 
       label14.Text = word; 
       myConn1.Close(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

     } 

     public void button1_Click(object sender, EventArgs e) 
     { 
      //Code for Game Begins 
      int i = 0, j = 0; 
      int lengthcount = 0; 
      string choice = textBox1.Text; 
      string guess; 
      label14.Text = word + "**"; 
      // for (i = 0; i<word.Length; i++) 
      /* { 
        if (word[i] == choice[0]) 
        { 
         label14.Text = "Good Guess! You Scored a point"; 
         lengthcount++; 
         score += 5; 
         guess = choice; 
         label9.Text= guess; 
        } 
        else 
        { 
         chances--; 
         guess = "______"; 
         if (chances == 0) 
         { 
          label14.Text = "You Lost the Game! Turns Over"; 
          button1.Enabled = false; 
         } 
         else 
         { 
          label14.Text = "Sorry! Try Again"; 
         } 
        } 

       }*/ 
     } 
    } 
} 
+2

質問を編集して質問にコードを追加してください – Sybren

+2

コードをテキストとして投稿してください。コードをコンパイルして問題を再現できるようにしてください。 – dlatikay

+2

WinFormsアプリケーション内のメンバ間で変数を共有するにはどうすればいいですか?(静的キーワードを使用しますか?)(https://stackoverflow.com/questions/35846041/how-do-i-share-variables-between-members- in-a-winforms-application-use-static-k) – derloopkat

答えて

0

あなたは方法のようbutton1_Clickを呼び出すことができますが、Clickイベントは、デフォルトEventHandlerによって処理されているので、あなたは、直接に値を渡すことはできませんので、あなたはちょうど2つのパラメータがあります。object senderEventArgs eを:

button1_Click(sender, e); 

しかし、あなたは、Form2クラスのプロパティ(またはフィールド/変数)を使用することができますForm2_Loadメソッドから値を保持するために、そしてbutton1_Click方法で、次に読んだ後:

public partial class Form2 : Form 
{ 
    // ... 
    private string ValueToHold { get; set; } 
    // ... 
    public void Form2_Load(object sender, EventArgs e) 
    { 
     // ... 
     ValueToHold = "something"; 
     // ... 
    } 
    public void button1_Click(object sender, EventArgs e) 
    { 
     // ... 
     // Use the ValueToHold here! 
     // ... 
    } 
}