今天我要说的是如何解决一个问题,我把自己当成一个哲学家,很小的时候,我独自一个人过木桥的时候,在想:“人死了后,怎么办,这个世界上没有我了”,长大后偶尔想:“人生怎样过,才算最好?”。这样的哲学问题,是不是很有意思呢?
如何解决一个问题,我是从解决具体问题中总结出来的。
我们的软件产品有这样一个问题:当把显示模式调到125%的时候,界面上的某些文字不见了:
遇到这样的问题,我们该如何处理呢?
1、详细描述问题:
当把显示界面调整到125%的时候,listview某一列的值不见了。如果是汉字的时候,不见了。如果为英文,且长度比较长的时候,不见了。
为什么要详细描述问题?因为,如果详细描述问题,首先可能会帮助我们理解问题本身;其次,为搜索打下基础;最后,与人沟通的时候,也好让人明白。
2、收集资料
带着关键词去网上搜索。关键词可以变换,搜索引擎也可以换。比如在百度上搜不出来什么资料的时候,可以换bing,还不行的话,可以换到google上。百度上有时候广告太多,无用的信息占了半页。
3、学习新名词
我在搜索的过程中,遇到一个非常相似的问题,下面有人给出了建议,开发支持高DPI的程序。什么是高DPI?这时候,需要再次搜索资料,去了解,去学习。
4、搜索到具体一些操作方法,去实践
在网上搜索到了一些操作的方法,比如调用win32底层、比如添加配置项等等,这些方法都是为了程序能够适应高DPI。但是我操作了所有的方法,没有一个能够解决我的问题。因为这些操作都是针对高版本的.Net Framework。
5、调整自信心
到了第4步,可能会成功,也很有可能会失败。如果失败了,请别灰心。我经历了第四步后,仍然迷茫,没有解决问题,这时候,我给自己写下了一句话:不要担心最终弄不出来,我一定行,只管经过,不论结果。 这样写的目的,等我解决了问题,回头看看我写的话,等下一次解决问题的时候,要怀有”革命必胜的信念”。小时候,学习语文课本的时候,老师总是让人总结一篇文章的中心思想。“这篇文章表达了对革命必胜的信念”,其实呢,能不能取胜,没人知道,但是必须抱有信心,否则闹什么革命。
这时候,也可以适当地喝喝水,休息下,调整心态,调整心情,当一个问题遭遇太多的挫折时,人就会心累,有一种挫折感。
6、一定还有盲区,要采取一些手段研究
一定有什么东西或者什么原理,我还没有搞明白。当还没有解决问题时,肯定是哪不清楚。为了找出产生问题的地方,我自己做了个页面,仿照有问题的页面,一步一步逼近真实的页面。结果是我的页面显示正常。因为页面比较复杂,不太好模仿。后来,我就直接把页面复制了一份,然后,针对这个页面,只保留最核心的东西,把多余的东西删除。最后发现页面的某个属性和之前自己建立的页面属性不相同,想到搜资料的时候,看到的一句话。原来页面的listview是自己用程序画出来的,不是控件本身生成的。自己画出来的页面,我们要负责高DPI的适配。如果是控件自身生成的页面,系统已经帮我们做了。这个就是盲区。接下来的工作,就是研究这个盲区。这里我采取的一些手段有:对比法、加减法。这两个方法特别常用,而且效果比较好。为了逼近真相,我们附加一些信息,或者去掉一些信息,然后在比对结果。
7、彻底理解问题。
产生这样的问题的本质是什么呢?高dpi的情况下,字的高度会变高,而listview的行高还是以前的行高,没有变化,这就导致了字放不下,显示不出来。
8、解决问题,就是要善于折腾,不怕挫折。
想想孙中山,“愈战愈败,愈败愈战”,但是仍然保持革命必胜信念。
以上就是我解决问题的一些心得。