У меня есть две формы Form1, которая имеет класс CharStats
внутри него и Mainform, который имеет класс MainForm
. MainForm
имеет связанную с ним метку pcNameLabel
и CharStats
содержит кнопку, которая, как предполагается, должна менять pcNameLabel.Text
при нажатии. Поскольку я общаюсь между формами и классами, у меня есть статический метод SetInfo()
внутри MainForm
, который вызывается методом StatTransfer()
внутри CharStats
. Все это почти работает правильно, за исключением того, что я не могу изменить pcNameLabel.Text
из статического метода SetInfo()
из-за статической нестационарной вещи. Итак, как мне это сделать.Попытка изменить метку с использованием статического метода
MainForm (я вырезал некоторые не соответствующие данные, обрабатывает переменные)
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();
}
}
Ну который * например * формы вы хотите изменить текст? Мне совершенно не ясно, что 'SetInfo' должен быть статическим в первую очередь. –
Когда он не статичен, я не могу получить к нему доступ из формы1. Текст находится в mainform – AmazingMrBrock
Ну, вам нужно называть его * экземпляром * MainForm'. В этом-то и дело. Form1 (который, по-видимому, фактически называется CharStats), должен иметь экземпляр 'MainForm', чтобы манипулировать этим экземпляром. Представьте себе, что одновременно показывались два экземпляра «MainForm» - как бы все знали, какая форма должна измениться? –