C# Изменение текста с метки с помощью кнопки из UserControl - PullRequest
1 голос
/ 28 апреля 2020

извините за этот глупый вопрос. Я пытаюсь выучить C# сам.

Я пытаюсь изменить текст из метки в моей форме с помощью кнопки из пользовательского элемента управления.

В моем Form.cs

public void AddPizzaFirst_Click(object sender, EventArgs e)
{
    Warenkorb.Text = "Test";
}

и это в моем пользовательском контроле

public Speisekarte()
{
    InitializeComponent();
}

Но ничего не произойдет, если я нажму на кнопку.

Если я использую кнопку в той же форме, как эта, она работает:

public void DateLabel_Click(object sender, EventArgs e)
{
    Warenkorb.Text = "Test";
}

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вы можете использовать событие и Eventargs в вашем UserControl, например:

public partial class Speisekarte : UserControl
{
    public event EventHandler<ChangeTextEvenArgs> ChangeText;

    public Speisekarte (  )
    {
        InitializeComponent ( );
    }

    private void Button_Click ( object sender, EventArgs e )
    {
        ChangeText?.Invoke ( this, new ChangeTextEvenArgs ( ) { Text = "New Text" } );
    }

    public class ChangeTextEvenArgs : EventArgs
    {
        public string Text { get; set; }
    }
}

Затем в форме мы создаем дескриптор для управления событием UserControl:

public partial class MainWindow : Window
{
    public MainWindow ()
    {
        InitializeComponent ( );
        this.MySpeisekarte.ChangeText += Speisekarte_ChangeText;
    }
    private void Speisekarte_ChangeText ( object sender, Speisekarte.ChangeTextEvenArgs e )
    {
        this.Warenkorb.Text = e.Text;
    }
}

Это потому, что у вас нет экземпляра Windows в вашем UserControl, но с событием форма или windows получает текст при его запуске, для этого мы генерируем EventArgs со свойствами, которые нам нужны пройти в случае

0 голосов
/ 28 апреля 2020

Компонент изменил свое значение, если вы выполните проверку в своем отладчике или просто напечатаете значение, вы увидите, что класс кнопки действительно изменил свой текст. Проблема в том, что вы не обновляете саму форму. Он не был перерисован после того, как вы изменили форму.

Попробуйте обновить / перекрасить форму, и вы должны увидеть имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...