纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

C# SelectedIndexChanged事件 C# SelectedIndexChanged事件详解

ruiqi317   2021-08-12 我要评论
想了解C# SelectedIndexChanged事件详解的相关内容吗ruiqi317在本文为您仔细讲解C# SelectedIndexChanged事件的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C#,SelectedIndexChanged,C#,SelectedIndexChanged事件下面大家一起来学习吧。

SelectionChangeCommitted事件

在设定datasource和displaymember和valuemember时以及手动改变combobox索引和值时都不触发该事件, 只是在界面选择combobox不同值时触发。

SelectedIndexChanged事件  当 SelectedIndex 属性更改时发生索引改变时触发。

SelectedValueChanged事件   当 SelectedValue 属性更改时发生值改变时触发。

区别:

  1. SelectedIndexChanged和SelectedValueChanged可以通过编程的方式更改属性而触发事件但SelectionChangeCommitted事件必须由用户操作选定选项才能触发。
  2. 在初始化时(设置源)SelectedIndexChanged和SelectedValueChanged都会被调用而SelectionChangeCommitted没有这个问题。
  3. SelectionChangeCommitted也有一个小问题当打开下拉菜单用键盘的上下光标键选择条目后(不用鼠标点击)鼠标点击其他控件使焦点转移此时comboBox的Text属性已改变SelectedIndex属性也已改变但这样的操作不会触发SelectionChangeCommitted事件。结论:SelectionChangeCommitted一定要由鼠标选择才能触发(个人感觉)。

关于事件的触发

设置DataSource, DisplayMember, ValueMember不同顺序触发SelectedIndexChanged事件和SelectedValueChanged事件的次数

顺序一:

this.comboBox1.DisplayMember = "userName";  (不触发)

this.comboBox1.ValueMember = "userAge";    (只触发SelectedValueChanged)

this.comboBox1.DataSource = dt; (都触发)

SelectedValueChanged触发两次(总是先触发)SelectedIndexChanged触发一次 (设置DisplayMember属性时不触发两种事件)

顺序二:

this.comboBox1.ValueMember = "userAge";

this.comboBox1.DisplayMember = "userName";

this.comboBox1.DataSource = dt;

同上

顺序三:

this.comboBox1.DataSource = dt; (都触发)

this.comboBox1.DisplayMember = "userName";(都触发)

this.comboBox1.ValueMember = "userAge";(只触发SelectedValueChanged事件)

SelectedValueChanged触发三次(总是先触发)SelectedIndexChanged触发两次 (设置DisplayMember属性时不触发两种事件)

顺序四:

this.comboBox1.DataSource = dt; (都触发)

this.comboBox1.ValueMember = "userAge";(都触发) 其中SelectedValueChanged触发两次

this.comboBox1.DisplayMember = "userName";(都触发)

SelectedValueChanged触发四次(总是先触发)SelectedIndexChanged触发三次 (设置DisplayMember属性时不触发两种事件)

说明:当设置了DataSource 属性后SelectedValue 属性值会默认为第一行(所以会触发SelectedIndexChanged事件和SelectedValueChanged事件)因此如果不希望ComboBox自动选择第一行还需在设置完DataSource 后自行将SelectedValue 设为“”。


相关文章

猜您喜欢

  • JAVA多线程 JAVA多线程线程安全性基础

    想了解JAVA多线程线程安全性基础的相关内容吗闻人此生在本文为您仔细讲解JAVA多线程的相关知识和一些Code实例欢迎阅读和指正我们先划重点:JAVA多线程,JAVA基础下面大家一起来学习吧。..
  • vue时间轴效果 vue+swiper实现时间轴效果

    想了解vue+swiper实现时间轴效果的相关内容吗侧耳倾听...在本文为您仔细讲解vue时间轴效果的相关知识和一些Code实例欢迎阅读和指正我们先划重点:vue,时间轴下面大家一起来学习吧。..

网友评论

Copyright 2020 www.Videogametimes.com 【视游时光】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式