CS0120, пытается отправить данные через RadioButton в ListBox - PullRequest
0 голосов
/ 10 марта 2020

У меня возникли некоторые проблемы при попытке сделать этот код, я пытаюсь настроить программу для регистрации посетителя с помощью собственного диалогового окна, которое я сделал, оно имеет 4 радиокнопки, и я не могу ничего сделать, чтобы исправить это прямо сейчас , И вот несколько скриншотов для ссылок на формы. https://imgur.com/a/TTZBZOE

Мой код Form1:

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;

namespace _2021415_20T1_L5IS_PP1_Assessment_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }



        private void button2_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.ShowDialog();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("Please enter your name");
            }
            if (textBox2.Text == "")
            {
                MessageBox.Show("Please enter your surname");

            }
            if (textBox3.Text == "")
            {
                MessageBox.Show("Please enter your mobile number");

            }
            if (textBox4.Text == "")
            {
                MessageBox.Show("Please enter your email");

            }
            if (numericUpDown1.Text == "0")
            {
                MessageBox.Show("Please enter the time");

            }
            if (numericUpDown2.Text == "0")
            {
                MessageBox.Show("Please enter the time");

            }




            else
                listBox1.Items.Add(comboBox1.SelectedItem + " - John Doe" + " at " + numericUpDown1.Text + ":" + numericUpDown2.Text);

        }

Тогда мой код Form2:

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;

namespace _2021415_20T1_L5IS_PP1_Assessment_2
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }


        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (radioButton1.Checked)
            {
                Form1.listBox1.Items.Add("");

            }

        }
    }
}

1 Ответ

0 голосов
/ 10 марта 2020

Формы - это классы, и они должны вызывать методы друг друга или обращаться к свойствам друг друга для передачи данных между ними. Они также должны иметь доступ к объектам друг друга.

В вашем коде Form1 создает объект Form2 и открывает его как диалог, но Form2 не знает текущий экземпляр Form1, который открыл диалог. Поэтому вам нужно сначала исправить это.

Вы можете сделать это, имея конструктор в Form2, который принимает в качестве аргумента объект Form1.

public partial class Form2 : Form
{
    private readonly Form1 form1;
    public Form2(Form1 form1)
    {
        InitializeComponent();
        this.form1 = form1;
    }
    //
    // Rest of the code of Form2...
    //
}

Здесь Form2 знает о экземпляре Form1 который открыл Form2 как диалог. Теперь по нажатию кнопки ОК Form2 должна иметь возможность передавать данные переключателя в Form2.

Для этого у Form1 может быть метод, который будет принимать данные в виде строки и добавлять их в свой список.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }

    public void AddItem(string item)
    {
        listBox1.Items.Add(item);
    }
    //
    // Rest of the code of Form1...
    //
}

Теперь Form2 может вызывать этот метод по нажатию кнопки OK.

public partial class Form2 : Form
{
    private readonly Form1 form1;
    public Form2(Form1 form1)
    {
        InitializeComponent();
        this.form1 = form1;
    }
    //
    // Rest of the code of Form2...
    //
    private void button2_Click(object sender, EventArgs e)
    {
        if (radioButton1.Checked)
        {
            this.form1.AddItem("");
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...