[原创]练习之排序(weas)

 

练习:

       c#做一个Windows程序的排序项目 界面如下:

随机给出10个数,在窗体加载的时候显示在listBox1上,例如:

 

当然了,具体的代码写在load事件里了:

        private void Form1_Load(object sender, System.EventArgs e)
        
{
            Random rd
=new Random();//随机数
            int[] paixu=new int[10];//存放到数组里
            for(int i=0;i<paixu.Length;i++)
                paixu[i]
=rd.Next(100);
            listBox1.DataSource
=paixu;//添加到listBox1中
        }

 

当我们点击按钮的时候,就把listBox1items的值进行排序,并且在listBox2

显示出来。一开始,我直接用listBox1.Iitems[index]进行类型转换、排序,赋值,问题出现了(因为:当你把listBox1.Items集合后,这个 DataSource是只读的了,你无法修改其中的值)。

怎么办?最后,只好把listBox1.Items中的值赋给一个数组,再对这个数组进行排序,然后在把数组的值现在在listBox2.Items中!

有的人会问?在load的时候就已经创建了一个数组了,这个数组可不可以在点击事件中使用?其实不能的,因为这两个事件是独立的,除非你在外部去定义的这么个
数组,看代码:
        static void Main() 
        
{
            Application.Run(
new Form1());
        }

        
//int[]paixu=new int[10]; 在这里定义的话,就可以在任何事件上使用了
        private void Form1_Load(object sender, System.EventArgs e)
        
{
            Random rd
=new Random();//随机数
            
//存放到数组里
            
//int[] paixu=new int[10];
            for(int i=0;i<paixu.Length;i++)
                paixu[i]
=rd.Next(100);
            listBox1.DataSource
=paixu;//添加到listBox1中
        }

 

虽然都可以,但是,我们最好还是能局部变量的尽量少用全局变量!!
按钮里的具体代码如下:

        //点击按钮进行排序
        private void button1_Click(object sender, System.EventArgs e)
        
{
            
//取得listBox1中的值
            int[]paixu=new int[10];
            
for(int i=0;i<10;i++)
                paixu[i]
=Convert.ToInt32(listBox1.Items[i]);
            
//排序
            for(int i=0;i<paixu.Length;i++)
                
for(int j=0;j<9;j++)    
                    
if(paixu[j]>paixu[j+1])
                    
{
                        
int temp=paixu[j];
                        paixu[j]
=paixu[j+1];
                        paixu[j
+1]=temp;
                    }

            
//排序后的值给listBox2
            listBox2.DataSource=paixu;            
        }

运行的最后结果(一次):


posted on 2007-07-27 15:59  寸芒  阅读(360)  评论(0编辑  收藏  举报

导航