Заполните значение TextBox для конкретного текстового поля - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть три TextBoxe1, TextBoxe2 и TextBoxe3 и один основной TextBox4 и Button1, когда его щелкнули, он вставит значение TextBox4 в нажатый (выбранный / выбранный / выбранный) TextBox. Этот код заполняет все текстовые поля одним и тем же значением.

    private void button1_Click(object sender, EventArgs e)
    {
        TextBox[] array = new TextBox[3] { textBox1, textBox2, textBox3 };
        for (int i = 0; i < 3; i++)
        {
            if (array[i].Focus())
            {
                array[i].Text = textBox4.Text;
            }
        }

    }

enter image description here

Но я хочу, чтобы он взял значение TextBox4 и вставил в TextBox2, на который я нажал. Мне нравится эта иллю.

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Лучше изменить способ установки значения для этих TextBox элементов управления и подумать о другом пользовательском интерфейсе, но в любом случае, если вы хотите оставить все как есть, я поделюсь идеей удовлетворить требование, которое выописано в вопросе.

Определите поле в форме, TextBox selectedTextBox;, затем обработайте Enter событие этих 3 TextBox элементов управления и в наборе обработчиков selectedTextBox = (TextBox)sender.Затем в Click обработчике события кнопки проверьте, не равен ли selectedTextBox значение NULL, затем установите selectedTextBox.Text = textBox4.Text;:

TextBox selectedTextBox;
public Form1()
{
    InitializeComponent();

    textBox1.Enter += TextBox_Enter;
    textBox2.Click += TextBox_Enter;
    textBox3.Click += TextBox_Enter;

    button1.Click += button1_Click;
}

void TextBox_Enter(object sender, EventArgs e)
{
    selectedTextBox = (TextBox)sender;
}
void button1_Click(object sender, EventArgs e)
{
    if(selectedTextBox!=null)
        selectedTextBox.Text = textBox4.Text;
}

Убедитесь, что вы не подключаете обработчик события дважды, поэтому для прикрепления событияобработчик, используйте редактор кода или конструктор, но не оба.

0 голосов
/ 11 сентября 2018

Зарегистрируйте событие Click 3 целей TextBox es для одного и того же обработчика:

public Form1()
{
    InitializeComponent();

    textBox1.Click += TransportValueEvent_Click;
    textBox2.Click += TransportValueEvent_Click;
    textBox3.Click += TransportValueEvent_Click;
}

Внутри обработчика получите sender (это будет TextBox, по которому вы щелкнули)как TextBox и напишите значение:

private void TransportValueEvent_Click(object sender, EventArgs e)
{
    (sender as TextBox).Text = textBox4.Text;
}

Теперь вам больше не нужна кнопка.Значение будет записано в правильный TextBox, как только вы щелкните по нему.

Может быть, вы хотите избежать удаления, если textBox4 пусто, тогда вы можете обновить значение, только если:

private void TransportValueEvent_Click(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(textBox4.Text))
    {
        (sender as TextBox).Text = textBox4.Text;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...