几个常用的控件(2)

目录

一、单选按钮Radiobutton和RadioButtonList

1、Radiobutton控件

(1)button控制方式

(2)Radiobutton控制方式

2、RadiobuttonList控件

二、列表框ListBox和下拉列表DropdownList

1、ListBox

2、DropdownList

三、面板控件panel

四、日历

五、FileUpLoad

六、隐藏域HidderField


前面一篇中介绍了几个常用的控件,这篇继续学习常用的控件。

一、单选按钮Radiobutton和RadioButtonList

前面简单的看了一下这两个控件长什么样子,下面我们试着用小例子来学习一下这两个的使用差别。

用例一:使用这些按钮来选择图片,该怎么操作呢?

1、Radiobutton控件

首先,尝试使用单个按钮Radiobutton来实现:

拖动一个Image控件和四个Radiobutton控件,如下摆放:

控制使用哪个图片有两种方式,一种是直接加一个button,然后选择一个Radiobutton,点一下button,这种是比较繁琐的;另一种是直接修改每个Radiobutton的功能。但是作为初学者,一定不能选择跳过(说给我自己听的,以前跳过的太多后面后悔也不知道咋补了),下面先加一个button试试如何让他显示吧:

(1)button控制方式

双击button添加其功能:

cs 复制代码
        protected void Button3_Click(object sender, EventArgs e)
        {
            if (RadioButton1.Checked)
            {
                this.Image1.ImageUrl = "Images/1.png";
            }
            if (RadioButton2.Checked)
            {
                this.Image1.ImageUrl = "Images/2.png";
            }
            if (RadioButton3.Checked)
            {
                this.Image1.ImageUrl = "Images/3.png";
            }
            if (RadioButton4.Checked)
            {
                this.Image1.ImageUrl = "Images/4.png";
            }
        }

启动,然后运行一下试试:

我们可以看到,四张倒是都能显示,但是有一个大大的缺点就是,这个RadioButton一旦被选择,那么它就回不去了,即一直显示的是被选的状态。我们肯定不希望是这么个现象的,要怎么做才能不出现在这种问题呢,我们继续往下看。

(2)Radiobutton控制方式

删除Button控件,依次修改每个Radiobutton的功能:

cs 复制代码
 protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
        {
            this.Image1.ImageUrl = "Image/1.png";
        }

 protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
        {
            this.Image1.ImageUrl = "Image/2.png";
        }

protected void RadioButton3_CheckedChanged(object sender, EventArgs e)
        {
            this.Image1.ImageUrl = "Image/3.png";
        }

protected void RadioButton4_CheckedChanged(object sender, EventArgs e)
        {
            this.Image1.ImageUrl = "Image/4.png";
        }

这是我的想法,至于行不行呢,咱们边走边看吧:

好吧,确实不行,应该怎么用呢?不理解。。。。。(慢慢来吧)

先解决(1)中提到的问题吧。这时候就需要使用到RadiobuttonList控件。

2、RadiobuttonList控件

我们可以看到,默认状态下,该列表是竖向排列的,那么想要它横向排列,该怎么做呢?

只需要修改RadiobuttonList的属性RepeatDirection为horizontal即可。

下面,按照要求进行修改它们的功能:

不加按钮的时候,怎么都不出来图片,这是为什么我不太理解。。。。。。

所以被迫加上按钮,就可以按照要求跳转了:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

         protected void Button1_Click(object sender, EventArgs e)
         {
             string r = RadioButtonList1.SelectedItem.Text;
             if (r == "1")
             {
                 Image1.ImageUrl = "Images/1.png";
             }
             if (r == "2")
             {
                 Image1.ImageUrl = "Images/2.png";
             }
             if (r == "3")
             {
                 Image1.ImageUrl = "Images/3.png";
             }
             if (r == "4")
             {
                 Image1.ImageUrl = "Images/4.png";
             }
         }
        
    }
}

二、列表框ListBox和下拉列表DropdownList

这两个控件基本上是一样的,但是显示的效果是不同的,ListBox是将所有选择都显示且可以多选,但是DropdownList一次只显示一个且一次只能选择一个。

1、ListBox

就是一个这样的框,在这个框里面可以添加很多的选择,例如:

运行显示就是这样子的:

前面说的可以多选,要多选的话就需要修改属性:SelectionMode,修改为Multiple,修改看看效果:

按着Ctrl键,就可以多选了:

2、DropdownList

加上选择的话,一次只显示一个:

运行显示的样子(这个框拉的有点大了,哈哈哈哈,等会改小点):

这是直接加上去的,后面也可以追加上去。使用的语句是DropDownList1.Items.Add("");

但是加的时候要注意,只能加一次,而不能每按一次就加一次,这时候,就可以用到以前使用过一次的IsPostBack。

cs 复制代码
protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DropDownList1.Items.Add("凉拌黄瓜");
                DropDownList1.Items.Add("西红柿炒鸡蛋");
            }
        }

单击button之后,就可以看到加上去的菜了:

下面按照上面的两种方式,选择之后,显示"你选择了:** "

cs 复制代码
protected void Button2_Click(object sender, EventArgs e)
        {
            Label1.Text = "你选择了:";
            Label1.Text += ListBox1.SelectedItem.Text;
        }

protected void Button3_Click(object sender, EventArgs e)
        {
            Label2.Text = "你选择了:";
            Label2.Text += DropDownList1.SelectedItem.Text;
        }

但是,出现了一个错误,如果用列表框,选择之后,显示的是第一个选择的,这个应该怎么修改呢?

暂时不清楚,等脑子清醒了在想吧。

如果有两个下拉列表,那么如何让它们联动呢?

我的想法是,将两个分别设置,但是有一个问题,就是有可能会错位,比如说我第一个设置的是省份,甘肃、新疆,市有定西、乌鲁木齐,如果选择错误的话就有可能出现新疆-定西这种情况。显然,这是错误的情况,所以设置的时候应该省份的时候,才去选择市。

先添加省份:

这里设置value是因为后面需要:

添加的时候发现这个会出错了,因为前面switch后面的字符型,所以需要修改成int型:

还是会出错:

为什么会出现这个错误呢?在课堂里也出现了这个错误,但是这个错误有时候却不会出现,所以这个需要再搜搜资料。

注释掉这句话之后,发现我连前面的功能是错误的,首先,我设置是第一个下拉框的Value值,但是我前面写的是第二个下拉框的 value,所以是错的。最终的代码应该是如下的:

cs 复制代码
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
        {
            DropDownList3.Items.Clear();
     
            switch (Convert.ToInt32(DropDownList2.SelectedValue))
            {
                case 0:
                    DropDownList3.Items.Add("定西");
                    DropDownList3.Items.Add("兰州");
                    DropDownList3.Items.Add("平凉");
                    break;
                case 1:
                    DropDownList3.Items.Add("乌鲁木齐");
                    DropDownList3.Items.Add("石河子");
                    DropDownList3.Items.Add("喀什");
                    break;
            }
        }

截图如下:

下面就修改label的功能:

在这句话后面加一个+ "" 就可以正常运行了,先记住吧。。(后面又不能正常运行了,啊啊啊啊啊啊,真的是一阵一阵的,最后发现,首先要修改一下第一个下拉框 ,才能使用button控件,如果不设置,就会出现上面的错误,**因为:**不设置第一个的时候可能switch后面没值,所以根本无法判断是哪种情况,所以会错误)

cs 复制代码
protected void Button4_Click(object sender, EventArgs e)
        {
            Label3.Text = "你在:";
            Label3.Text += DropDownList2.SelectedItem.Text + DropDownList3.SelectedItem.Text + "";
        }

最终结果如下:

三、面板控件panel

四、日历

就和平时我们看的日历一样,除此之外,可以通过自动套用格式来修改日历的样式:

五、FileUpLoad

文件上传的时候我们通常会遇见这种控件,但是最终实现的操作还是双击设置的功能。

六、隐藏域HidderField

才开始学,先学习到核心的几个控件就好了,后面的这个知道有这个东西就好,以后用的时候再慢慢研究吧。

相关推荐
秦jh_17 分钟前
【Linux】多线程(概念,控制)
linux·运维·前端
蜗牛快跑21330 分钟前
面向对象编程 vs 函数式编程
前端·函数式编程·面向对象编程
Dread_lxy31 分钟前
vue 依赖注入(Provide、Inject )和混入(mixins)
前端·javascript·vue.js
娅娅梨37 分钟前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
汤米粥42 分钟前
小皮PHP连接数据库提示could not find driver
开发语言·php
冰淇淋烤布蕾1 小时前
EasyExcel使用
java·开发语言·excel
拾荒的小海螺1 小时前
JAVA:探索 EasyExcel 的技术指南
java·开发语言
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
马剑威(威哥爱编程)1 小时前
哇喔!20种单例模式的实现与变异总结
java·开发语言·单例模式
榴莲千丞1 小时前
第8章利用CSS制作导航菜单
前端·css