1

我正在使用randomsorting方法。到目前为止,我有线性方法工作。我正在尝试实现一种方法,让用户决定使用哪种类型的排序,例如linearbubbleindex等。所以我添加textBox7了标签Keybutton3用户点击它,直到找到他们想要的排序方法。当 Keytextbox7选择了一个值时,排序数组button2将执行该特定的排序方法。如何根据Key值执行特定的排序方法?下面是我如何设置 windows 窗体的图片

代码

namespace sortmachine
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

        }


        Stopwatch sw = new Stopwatch();


        Random r = new Random();

        private int size = 0;
        private int max = 0;
        private int ops = 0;
        private int[] ar1;
        private int[] ar2;
        private int[] ar3;

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                size = Convert.ToInt32(textBox2.Text);
                max = Convert.ToInt32(textBox3.Text);
                string s = "";

                ar1 = new int[size];
                ar2 = new int[size];
                ar3 = new int[size];

                for (int i = 0; i < size; i++)
                {
                    int n = r.Next(0, max);
                    ar1[i] = n;
                    ar2[i] = ar1[i];
                }

                for (int i = 0; i < size; i++)
                {
                    s += ar1[i].ToString() + " ";
                }
                listView1.Items.Add(s);
            }
            catch
            {
                MessageBox.Show("Please input information");
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int min = max;
            int n = 0;
            string s="";

            sw.Start();

            for (int j = 0; j < size; j++)
            {
                for (int i = 0; i < size; i++)
                {
                    if (min > ar2[i])
                    {
                        min = ar2[i];
                        n = i;
                        ops++;
                    }
                    if (min < ar2[i])
                    {
                        ops++;
                    }

                }
                ar2[n]=max;
                ar3[j] = min;
                min = max;
                s += ar3[j] + " ";
            }

            TimeSpan x = sw.Elapsed;
            textBox5.Text = x.ToString();

                listView2.Items.Add(s);
                listView2.Text = s;
                textBox6.Text = Convert.ToString(ops);
                if (checkBox1.Checked==true)
                {
                    textBox1.AppendText(s+Environment.NewLine);
                }
                for (int i = 0; i < size; i++)
                {
                    ar2[i] = ar1[i];
                }
                ops = 0;

        }

    }
}
4

3 回答 3

1

我建议使用组合框或 DropDownList 来存储排序选项,并使用其 SelectedText 属性来确定用户单击排序时要使用的排序方法。

只需将组合框拖到您的表单上即可。然后向其中添加项目,即单击编辑项目并填写值。

然后你在代码中所做的就是编写类似的东西。

string sortOption = comboBox1.SelectedText;
于 2012-10-24T03:01:06.563 回答
1

如何使用RadioButtonList 在排序选项之间进行选择以确定用户所需的排序而不是键值方法。

只需放置一次只允许一个选择的RadioButtons内部,然后单击排序按钮,您可以检查每个属性以应用排序。GroupBoxRadioButtonCheckedRadioButton

if (rdoBtnQuick.Checked)
    // Apply Quick Sort
else if (rdoBtnSelection.Checked)
    // Apply Selection Sort
else if (rdoBtnBubble.Checked)
    // Apply Bubble Sort
//...
于 2012-10-24T03:28:54.087 回答
1

我会尝试一下,因为它实现了其他人的建议:

在每个 if 条件中,您可以针对每种排序类型执行自己的逻辑。正如您所看到的,我从组合框中选择了一个排序选项,其中包含其他按钮,用于将数字添加到我的列表中以进行排序,并使用一个控件来显示结果。

截图中的代码如下:

if(comboBox1.SelectedItem.ToString() == "Linear")
{
}
else if (comboBox1.SelectedItem.ToString() == "Bubble")
{            
}
else if (comboBox1.SelectedItem.ToString() == "Index")
{
}

在此处输入图像描述

于 2012-10-24T03:43:33.830 回答