Как преобразовать текст (содержащий метку и координаты) в текстовом поле в кнопку с указанными координатами? - PullRequest
0 голосов
/ 04 января 2019

в WindowsForms, когда я ввожу текст в свое текстовое поле, например «кнопка, 100, 200, ЭТИКЕТКА», а затем нажимаю кнопку - я хотел бы работать как скрипт - например, после нажатия кнопки я хотел бы иметьновая кнопка в позиции (100,200) с надписью «LABEL».Каким было бы решение?

это для визуальной студии 2017

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        insertedText = textBox1.Text;
    }           


    private void executeToolStripMenuItem_Click(object sender, EventArgs e)
    {
        DoTheButton();
    }

    private void DoTheButton()
    {

        string test = "button,100,200,LABEL";

        int a = Int32.Parse(insertedText);

        if(insertedText==test)
        {
        Button btn = new Button();
        btn.Location = new System.Drawing.Point(100,200);
        btn.AutoSize = true;
        btn.Text = "open";
            Controls.Add(btn);
        }
        else
        {
            MessageBox.Show("Wrong text");
        }

К сожалению, это совсем не решение для сценариев - оно просто показывает кнопку, когда я вставляю правильный текст - но я бы хотелработать как сценарий.

1 Ответ

0 голосов
/ 04 января 2019

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

В простом случае ваш скрипт принимает четыре аргумента, разделенных запятой, где
(0) - это имя типа элемента управления
(1) - это местоположение. Значение X *
(2)является местоположением. Значение Y
(3) является текстовым значением

private Button CreateFrom(string script)
{
    var values = script.Split(",");
    if (values.Length != 4)
    {
        throw new ArgumentException("Not all values provided", nameof(script));
    }

    if (int.TryParse(values[1], out int x) == false)
    {
        throw new ArgumentException("X value is invalid");
    }     

    if (int.TryParse(values[2], out int y) == false)
    {
        throw new ArgumentException("Y value is invalid");
    }    

    if (string.isNullOrEmpty(values[3]))
    {
        throw new ArgumentException("Title is empty");
    }    

    var button = new Button 
    { 
        Text = values[3],
        Location = new System.Drawing.Point(x, y)
    };

    return button;        
}

private void DoTheButton()
{
    var button = CreateFrom(insertedText);
    Controls.Add(button);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...