Измените действие кнопок двумя другими кнопками. C # - PullRequest
0 голосов
/ 20 октября 2019

Я получил три кнопки. И есть две строки списка со случайными строками. Я хочу быть в состоянии нажать две первые кнопки, чтобы изменить «действие» на третьей. Если я нажимаю на первую кнопку, третья использует только «HEB», а если я нажимаю на вторую, третья использует «HEC»

. При нажатии кнопки 1 я хочу, чтобы button3 сделала это:

HEB f1 = new HEB();
textBox1.Text = f1.RandomString();

Когда я нажимаю кнопку 2, я хочу, чтобы кнопка 3 делала это:

HEC f2 = new HEC();
textBox1.Text = f2.RandomString();

Как лучше всего это решить?

РЕДАКТИРОВАТЬ: HEB и HEC - это произвольный текст, которыйотображается в текстовом поле 1 при нажатии кнопки 3.

ПОЛНЫЙ КОД:

    namespace Questions
{
    public partial class Form1 : Form
    {

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

        HEB f1 = new HEB();
        textBox1.Text = f1.RandomString();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        HEC f2 = new HEC();
        textBox1.Text = f2.RandomString();
    }

    private void button3_Click(object sender, EventArgs e)
    {

        }
    }
}


public class HEB
{
    List<string> list = new List<string>
        {
    "This is test number 1",
    "This is test number 2",
    "This is test number 3"
    };
    public string RandomString()
    {
        Random r = new Random();
        int index = r.Next(list.Count);
        string randomString = list[index];
        return randomString;
    }
}


public class HEC
{
    List<string> list = new List<string>
        {
         "This will show later number 4",
         "This will show later number 5",
         "This will show later number 6",
};
    public string RandomString()
    {
        Random r = new Random();
        int index = r.Next(list.Count);
        string randomString = list[index];
        return randomString;
    }
}

1 Ответ

0 голосов
/ 20 октября 2019

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

Что-то вроде:

public partial class Form1 : Form
{

    private List<string> messages;

    private string RandomString()
    {
        Random random = new Random();
        return messages[random.Next(messages.Count)];
    }

//To use it just do:
//(if it is a button it should have a method that it triggers on use)
    private void HEB() 
    {
        //same for HEC, but other strings (test 3 and 4)
        messages = new List<string>(){"test 1", "test 2"}; 
    }

    private void TheButton()
    {
        textBox1.text = RandomString();
    }
}

Это должно работать, но не бойтесь просить дополнительных разъяснений:)

РЕДАКТИРОВАТЬ: обновленный код, который работает (просто добавьте переменные и замените кодвнутри ваших текущих кнопок с кодом внутри моего).

namespace Test_btns
{
    public partial class Form1 : Form
    {
        private List<string> messages;
        Random random = new Random();

        private string RandomString()
        {
            return messages[random.Next(messages.Count)];
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            messages = new List<string>() { "test 1", "test 2" };
        }

        private void button2_Click(object sender, EventArgs e)
        {
            messages = new List<string>() { "test 3", "test 4" };
        }

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

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //not really needed for this, but the method exists.
        }
    }
}
...