Есть главный код, здесь я при нажатии на кнопку plant1_Click хочу создавать экземпляр класса Plant, присваивая ему значения name, color и age.
Позже я хочу изменять значение age из главного кода.
Так же я хочу вызывать метод ShowInfo в главном коде, который должен показывать значения переменных объекта класса Plant
Но ничего не работает :( Я не понимаю как мне обратиться к созданному объекту, в других функциях (кроме той, где его конструктор Plant newPlant = new Plant()) чтобы изменить значения переменных.
А метод ShowInfo Вообще пишет что infoBlock не существует в ее контексте.( что конечно же логично, но как тогда делать )
Помогите пожалуйста. Исходник: https://drive.google.com/file/d/1F0eADjJtHDpiW64SGSzptgzRZv324YHS/view?usp=sharing
namespace plant
{
public partial class MainWindow : Window
{
bool day = false;
string color, name;
int age;
public MainWindow()
{
InitializeComponent();
}
void plant1_Click(object sender, RoutedEventArgs e)
{
if (String.IsNullOrWhiteSpace(plantName.Text))
{
MessageBox.Show("Введите название растения");
}
else
{
if (color != null)
{
Plant newPlant = new Plant();
newPlant.name = plantName.Text;
newPlant.color = color;
newPlant.age = 0;
switch (color)
{
case "red":
//plantImage.Source = ConvertBitmapToBitmapImage(Properties.Resources.redPlant);
break;
case "green":
//plantImage.Source = ConvertBitmapToBitmapImage(Properties.Resources.greenPlant);
break;
case "yellow":
//plantImage.Source = ConvertBitmapToBitmapImage(Properties.Resources.yellowPlant);
break;
}
//garden.Source = ConvertBitmapToBitmapImage(Properties.Resources.garden);
}
else
{
MessageBox.Show("Выберите цвет");
}
}}}}
Класс Plant
namespace plant
{
internal class Plant
{
public string name;
public int age;
public string color;
public void ShowInfo()
{
infoBlock.Inlines.Add(new Run("Информация о растении:"));
infoBlock.Inlines.Add(new Run("Имя:"));
infoBlock.Inlines.Add(new Bold(new Run(newPlant.name)));
infoBlock.Inlines.Add(new Run("Цвет:"));
infoBlock.Inlines.Add(new Bold(new Run(newPlant.color)));
infoBlock.Inlines.Add(new Run("Возраст:"));
infoBlock.Inlines.Add(new Bold(new Run(Convert.ToString(newPlant.age))));
}
}
}
главный код2)Но ничего не работает- это ничего не объясняет 3) читайте про области видимости переменных и полей