内部にクラスを持つ Form1 とクラスCharStats
を持つ Mainformの 2 つのフォームがありますMainForm
。それにMainForm
関連付けられたラベルがあり、クリックされたときに変更されるはずのボタンが含まれています。私はフォームとクラスの間で通信しているので、内部のメソッドによって呼び出される静的メソッドのセットアップが内部にあります。静的で非静的であるため、静的メソッド内から変更できないことを除いて、すべてがほぼ正常に機能します。では、どうすればよいのでしょうか。pcNameLabel
CharStats
pcNameLabel.Text
SetInfo()
MainForm
StatTransfer()
CharStats
pcNameLabel.Text
SetInfo()
メインフォーム (変数を処理する関連のないデータをいくつか切り取りました)
public partial class MainForm : Form
{
int statHolder;
int statAdjuster;
string healthHolder;
int finalHealth;
int diceOut;
int maxDice;
int healingOnOff = 0;
int pcOrEn = 0;
int turnCount = 0;
int diceType;
int diceResult;
public static int formInit = 0;
public static string VariableLabel1;
public static string Variable2;
Random _r = new Random();
public MainForm()
{
CharStats form = new CharStats();
form.Show();
InitializeComponent();
}
public static void SetInfo()
{
Variable2 = VariableLabel1;
pcNameLabel.Text = Variable2;
}
}
Form1(変数扱いデータも切り出す)
public partial class CharStats : Form
{
string name = "";
string health = "";
string mana = "";
string strength = "";
string agility = "";
string intelligence = "";
public CharStats()
{
InitializeComponent();
}
void Fighter()
{
name = "Reginaldxxxxxxx";
health = "200";
mana = "50";
strength = "16";
agility = "12";
intelligence = "6";
}
public void StatTransfer()
{
MainForm.VariableLabel1 = Name;
MainForm.formInit = 1;
MainForm.SetInfo();
}
void FighterButtonClick(object sender, EventArgs e)
{
Fighter();
StatTransfer();
}
}