前言:
现在各位老铁们对“javacombobox”都比较讲究,同学们都需要学习一些“javacombobox”的相关文章。那么小编在网络上搜集了一些有关“javacombobox””的相关文章,希望我们能喜欢,小伙伴们快快来了解一下吧!前几天记录了一个关于ComboBox的文章,记录一个ComboBox的设置问题,你可能没遇到过。虽然看的人不多,但是“差评率”很高,一共8条评论,4条直接说基础太差,好评率这么低,你们想让我关店吗?[捂脸]
我一个编程20多年,经手过几十个项目,自己独立开发过6-7款产品的老程序员,竟然被集体认定为基础太差,还有王法吗?哈哈,开个玩笑[憨笑]。不过我回头一想,也许是我原文描述得不够清楚,让大家以为这是个很简单的问题。所以,我这次尽量完整地把这个问题展示下,看看这世上还有没有人跟我一样基础太差的。希望大家可以按我的进度,先做题,再看答案。
我要实现的功能很简单,就是动态生成ComboBox,动态指定它的值,然后设置默认选择项。
先看这段代码:
private void Form1_Load(object sender, EventArgs e) { ComboBox cbxA = new ComboBox(); List<DictionaryEntry> optionsA = new List<DictionaryEntry>(); optionsA.Add(new DictionaryEntry() { Key = "MultiLine", Value = "多行" }); optionsA.Add(new DictionaryEntry() { Key = "SingleLine", Value = "单行" }); cbxA.DataSource = optionsA; cbxA.ValueMember = "Key"; cbxA.DisplayMember = "Value"; cbxA.SelectedValue = "SingleLine"; this.Controls.Add(cbxA); }
现在第一个问题来了:
Q1:界面初始化完成后,cbxA的默认选择是:
(A)单行 (B)多行 (C)SingleLine (D)MultiLine (E)直接报错
大家到这里先暂停,用你们所学的基础去思考,然后在评论区写下你们的答案,再继续阅读。
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
程序的运行结果如下:
没有报错,但是默认选择并非是我们预期的单行,而是多行。我相信应该现在会有一些人翻上去看代码了,反正我的第一反应是一脸懵逼。
那么现在第二个问题来了:
Q2:要想让cbxA的默认选择为单行,如何调整代码?
大家到这里先暂停,用你们所学的基础去思考,然后在评论区继续写下你们的答案,再继续阅读。
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
.........
最终的代码是:
ComboBox cbxA = new ComboBox(); List<DictionaryEntry> optionsA = new List<DictionaryEntry>(); optionsA.Add(new DictionaryEntry() { Key = "MultiLine", Value = "多行" }); optionsA.Add(new DictionaryEntry() { Key = "SingleLine", Value = "单行" }); cbxA.DataSource = optionsA; cbxA.ValueMember = "Key"; cbxA.DisplayMember = "Value"; this.Controls.Add(cbxA); cbxA.SelectedValue = "SingleLine";
如果你没看出来变化,那么我告诉你,只要把this.Controls.Add(cbxA);和cbxA.SelectedValue = "SingleLine";换下位置就好了。
现在建议大家把答案都写在评论区,实在想看看大家的真实水平到底是什么?
实不相瞒,这个问题我调试了很久才找到了关键点,因为实际项目中的代码有很多层的调用关系,真正把这个comboBox加到控件中是放在其他函数中实现的。在我当时看来,就是把一个值设置给SelectedValue,但是设置以后,这个SelectedValue死活都是null,完全失效了,完全可以用诡异、灵异来形容。
事后诸葛亮我们谁都知道,每个人都可以给出合理的解释:比如基于效率的考虑,基于消息映射的考虑等等。就好像我们常说的那些专家一样。但是在问题没发生前,能提前预料到的有几个?预料不到的就被定性为基础太差吗?我不敢认为我的编程水平很牛,短板有很多,所以现在每天也都还在学习。但是就一个代码安放顺序导致的问题,就可以被集体定性为基础太差,这说明了什么呢?
还有比较搞笑的是有人教我去看下系统自动生成的designer.cs,老师,请你自己先用自动生成的代码去给我设置个SelectedValue出来然后再来教我吧。睁眼说瞎话且好为人师的实在是不能用稀缺来形容。
我表达这些,并不是因为我个人被评价为基础太差而感到不平。我是觉得这个社会缺少实事求是的精神,缺少认真负责的态度,而且数量庞大,哪怕他是一个做技术的。真心希望能看到我们伟大的祖国和人民的共同进步。
标签: #javacombobox