_Q12_ Ответов: 2

Стоимость трансфера из пользовательских элементов управления в форму form1


У меня есть форма 1. И файл usercontrol1.
в Form1 я нажимаю на метку и заставляю UserControl1 показывать.
В UserControl1 я обновляю публичное строковое значение.
Теперь мне нужно, чтобы это значение было на этикетке в форме 1.

Каков наилучший подход?

Что я уже пробовал:

использование только реализаций c# по умолчанию.

NotPolitcallyCorrect

ваша метка.Текст = ваш контроль.StringProperty


Расплывчатые вопросы дают расплывчатые ответы.

Karthik_Mahalingam

на кнопку нажать?

2 Ответов

Рейтинг:
1

OriginalGriff

Видеть здесь: Передача информации между двумя формами, Часть 2: Ребенок-Родитель[^]- это написано о формах, но родительская форма и дочерний UserControl-это точно такой же процесс и даже код.


_Q12_

Спасибо, мистер Оригиналгрифф.

Рейтинг:
1

_Q12_

Вот мой подход:
Более логично и проще, я думаю.
Просто спрячьте и покажите usercontrol, а также передайте данные между ними через открытые переменные.

//UserControl1
 public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }
        //Close the UserControl from Form1
        private void label1_Click(object sender, EventArgs e)
        {
            this.Visible = false; 
        }


        public string data = ""; 
        //crystal
        private void button1_Click(object sender, EventArgs e)
        {
            data = "crystal";
            Close();
        }
        //gas
        private void button2_Click(object sender, EventArgs e)
        {
            data = "gas";
            Close();
        }
        //cell
        private void button3_Click(object sender, EventArgs e)
        {
            data = "cell";
            Close();
        }

//--------------------------------------------------------------------------------

//Form1

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            controlClicked = "pictureBox1";
            userControl11.Visible = true;
        }

        
        string mainData = "";
        string controlClicked = "";
        private void userControl11_VisibleChanged(object sender, EventArgs e)
        {
            if (userControl11.Visible == false )
            {
                if (userControl11.data == "crystal")
                {
                    mainData = "crystal";
                    if (controlClicked == "pictureBox1")
                    {
                        pictureBox1.BackgroundImage = Image.FromFile("1.png");
                    }
                }
                if (userControl11.data == "gas")
                {
                    mainData = "gas";
                }
                if (userControl11.data == "cell")
                {
                    mainData = "cell";
                }

                //-------------------------
            }
        }