腾讯的面试,很基本,但是4年经验的我却不会,.NET WINFROM 的题目,受挫折想转行,大家会吗?会的话请告诉我。。。。。
在面试高级项目工程师的职位,腾讯的一个面试官问我:WINFROM DATAGRIDVIEW 我想改变某一列中某几行中的几个字的颜色,而且这一列是可以换行的,也就是说文本比较多,还可以
有图片,图标等等。。。。他问我如何实现,我说RICHETEXTBOXCELL应该可以,他就让我去上机。。。。。
2小时后我被鄙视了。。。。。。。大家有谁能做出来吗???哎。。。。 --------------------编程问答-------------------- 在cellPainting事件中处理,还可以结合cellFormatting事件 --------------------编程问答-------------------- 腾讯的面试流程非常长,非常令人讨厌
dataGridView1.Rows[1].Cells[0].Style.ForeColor = System.Drawing.Color.Red; --------------------编程问答-------------------- b/s的就比较简单
aspx
<%# GetColorText(Eval( "Field ").ToString())%>
cs
protecte string GetColorText(string fieldValue)
{
return fieldValue.replace( "哈 ", " <font color=red> 哈 </font> ")
} --------------------编程问答-------------------- mark,学习了! --------------------编程问答--------------------
+1 --------------------编程问答-------------------- mark,学习了 --------------------编程问答-------------------- 人类缺乏联想世界还剩下神马
既然是去腾讯,你自然得关注他们的产品。
那么他们的主打产品是啥,QQ啊---QQ的特征是啥:winform,可以输入文本,可以换行,还可以
有图片,图标等等。。。,那么那个地方腾讯自己是怎么解决滴,很明显是一个htmleditor
lz回答RICHETEXTBOXCELL实际也没错,但是对比一下htmleditor他就不是一个好答案了 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 很郁闷呀的。
没有找到好方法。 --------------------编程问答-------------------- 估计我比你还差,也很受打击,如果是平时研究研究也许还有可能,但面试 肯定是挂掉了 --------------------编程问答-------------------- 唉 大多数人差不多哦。。。白混了 --------------------编程问答-------------------- 呵呵
腾讯确实是很二比 --------------------编程问答-------------------- tracert --------------------编程问答-------------------- 微软的方法:是重写单元格模板类:
http://msdn.microsoft.com/zh-cn/library/7fb61s43(v=VS.80).aspx
也可以自己绘制的。。。。。。。。 --------------------编程问答--------------------
这句话表名了腾讯对QQ下一步想改进什么,
目前QQ在发消息的时候,改变文本颜色是消息里所有的文本都改变颜色,
而无法做到只改变其中一个字或几个字的颜色 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 哎。。。C# WINFROM 难道DATAGRIDVIEW的RICHTEXTOBXCELL真的就这么难嘛? --------------------编程问答--------------------
+1 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- 大家都不会吗??
难到腾讯的真这么牛逼。。。。 --------------------编程问答-------------------- 目前QQ在发消息的时候,改变文本颜色是消息里所有……
-------------------------------
n年前就可以了,何况这也没什么难度 --------------------编程问答--------------------
你这是全部都红了吧,要求的是几个字,不是全部 --------------------编程问答-------------------- --------------------编程问答-------------------- 重绘单元格吧 --------------------编程问答-------------------- cellFormatting里面可以很好的解决 --------------------编程问答-------------------- 可怜的lz。
那是面试官自己遇到的一个问题,自己还没想好怎么解决,所以问你。 --------------------编程问答--------------------
+1
--------------------编程问答-------------------- 两种方法:
1、将单元格的Rectangle获取,绑定一个RichTextBox或WebBrowser控件,并在单元格ReSize事件中调整绑定控件的位置。
2、继承DataGridViewCell单元格控件的那个类,重写一个,添加上去。 --------------------编程问答--------------------
同样的情况...感觉基础没打牢 --------------------编程问答-------------------- 我一直都做得BS...基本没做过winform。。。那我不是更要自杀? --------------------编程问答-------------------- 估计腾讯短期内不会做.Net的程序,针对国内盗版严重的情况,你觉得.net框架在中国的装机率是多少?2.0还稍微高一点,3.5少得可怜,4.0就不提了 --------------------编程问答-------------------- 除了继承cell自己重新写一个类,没别的好办法,自己实现onpaint --------------------编程问答-------------------- 要想控制具体哪几个字确实有点难度 --------------------编程问答-------------------- 可编辑文本的控件用richtextbox,当点击datagridview的某单元格时,让这个richtextbox盖住该单元格,并且显示和单元格一样的内容,在richtextbox里选择某些字,点击颜料盒里某种颜色,显示变色,和word里编辑文字一样吧;若数据不多,可以在数据绑定到datagridview上时,就动态的给每个单元格都盖上richtextbox,这样可以同时修改多个单元格内容 --------------------编程问答--------------------
--------------------编程问答-------------------- Mark ,DT的腾讯 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace HighLight
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void HighLightText()
{
string[] keywords = {"select","distinct","from","where","order","by","group","null"};
string[] functions = { "isnull", "count", "sum" };
string[] strings = { @"'((.|\n)*?)'" };
string[] whiteSpace = { "\t", "\n", " " };
rtbSql.SelectAll();
rtbSql.SelectionColor = Color.Black;
HighLightText(keywords, Color.Blue);using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace HighLight
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void HighLightText()
{
string[] keywords = {"select","distinct","from","where","order","by","group","null"};
string[] functions = { "isnull", "count", "sum" };
string[] strings = { @"'((.|\n)*?)'" };
string[] whiteSpace = { "\t", "\n", " " };
rtbSql.SelectAll();
rtbSql.SelectionColor = Color.Black;
HighLightText(keywords, Color.Blue);
HighLightText(functions, Color.Magenta);
HighLightText(strings, Color.Red);
HighLightText(whiteSpace, Color.Black);
}
private void HighLightText(string[] wordList, Color color)
{
foreach (string word in wordList)
{
Regex r = new Regex(word, RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(rtbSql.Text))
{
rtbSql.Select(m.Index, m.Length);
rtbSql.SelectionColor = color;
}
}
}
private void btnHighLight_Click(object sender, EventArgs e)
{
HighLightText();
}
}
}
HighLightText(functions, Color.Magenta);
HighLightText(strings, Color.Red);≈
HighLightText(whiteSpace, Color.Black);
}
private void HighLightText(string[] wordList, Color color)
{
foreach (string word in wordList)
{
Regex r = new Regex(word, RegexOptions.IgnoreCase);
foreach (Match m in r.Matches(rtbSql.Text))
{
rtbSql.Select(m.Index, m.Length);
rtbSql.SelectionColor = color;
}
}
}
private void btnHighLight_Click(object sender, EventArgs e)
{
HighLightText();
}
}
}
从面试策略角度讲,貌似你被人家牵着鼻子走了。这种问题明摆着不是5分钟内能解决的,面试官要求你上机处理,你是可以委婉的拒绝的(反正上了机也是个死,还不如赌一把),理由可以很充分:这种定制问题不是短时间能解决的,以他做上级测试不合适。如果他说他能解决(从腾讯已有产品上看应该不太可能)。那就赞扬赞扬他,抹抹稀泥好了。
从技术角度讲,缺省的datagridview肯定无法支持此项功能,只能通过实现定制的datagridviwColum的方式处理,改造成支持RichText的列。即使实现了,行宽,列宽调整也不美观,如果想在20分钟内解决问题,就建议他把datagridview改成tableLayoutPanel控件好了。
--------------------编程问答-------------------- 阿里旺旺的输入 应该就是他想要的吧 没想到方法 看高手 --------------------编程问答-------------------- 小yy的女友筱筱都进腾讯了。。。楼主。 --------------------编程问答-------------------- 告诉他 你们肯定有现成的 拿来用就行了 --------------------编程问答-------------------- 不会,我是学JAVA的。。用过JSF一样是RAD基于组件开发,功能还不如。NET。。不过我想,这个表格里的数据你可以提出来进行修改不就好了吗?实在不行。。应该有办法自行绘制单元格的。。毕竟组件和绘制是无关的。。。 --------------------编程问答-------------------- 9楼呀, 做人也要讲良心,
拿个头像吓人干什么呀.... BS --------------------编程问答-------------------- 要求立即上机,这面试官水平也不高,怀疑tx的动机,估计就算lz你写出来,人家也不会要你,因为他招你就是为了解决这个问题,都已经写出来解决了,还要你做啥? --------------------编程问答-------------------- 呵呵,MARK --------------------编程问答-------------------- 本来没看到9楼的,因为42楼的话被9楼的头像吓到了 --------------------编程问答-------------------- 风语者已经给出答案了,另外我觉得楼主的说法也是正确的,怕是当时你卡在了如何封装richtextboxcell上了吧。richtextbox实现了这个功能,然后再把它封装一下就可以了。 --------------------编程问答-------------------- 通过模版列和控件,再绑定时判断一下值就可以实现了。 --------------------编程问答-------------------- 毕竟面试主要还是集中在意识流上,所以你一上机就落了下乘了(不管做的多好)。毕竟是面试,不是他让干啥就干啥,你完全可以在谈话技巧上把上机这件事情谈掉的 --------------------编程问答-------------------- --------------------编程问答-------------------- 这是个变态的问题 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- N年前做过这样的,D7做的,是自己重绘的,onPain里好像 --------------------编程问答--------------------
你不是一个人。 --------------------编程问答--------------------
这个早就有了的~ --------------------编程问答-------------------- 大点的公司都这么装 --------------------编程问答-------------------- qssssssssss --------------------编程问答-------------------- 复制粘贴多了,细节记不清了,对面试有影响不? --------------------编程问答-------------------- 受挫了就好好学,到时候去羞辱腾讯 --------------------编程问答-------------------- win32 重绘就可以了 --------------------编程问答-------------------- 企鹅好牛··· --------------------编程问答-------------------- RichTextBox Cell in a DataGridView
引用:http://www.codeproject.com/KB/grid/RtfInDataGridView.aspx --------------------编程问答-------------------- 1.换行
RowsDefaultCellStyle.WrapMode = DataGridViewTriState.true;
AutoSizeRowsMode属性为:DisplayedCellsExceptHeaders
2.变颜色
dgvShow.Rows[n].DefaultCellStyle.ForeColor = Color.Red;
3.图片列
//添加图片列
DataGridViewImageColumn colImg = new DataGridViewImageColumn();
colImg.Name = "照片";
colImg.ValuesAreIcons = false;
colImg.ImageLayout = DataGridViewImageCellLayout.Zoom;
dgvShow.Columns.Add(colImg);
Image nowImg = 获取图片;
dgvShow.Rows[i].Cells["照片"].Value = nowImg;
--------------------编程问答-------------------- --------------------编程问答--------------------
只让一行中几个字变色,呀老大。
--------------------编程问答-------------------- 此处不留爷,自有留爷处 --------------------编程问答--------------------
只想到这种情况 --------------------编程问答--------------------
这个可不一定……貌似之前飞信就是将用到的核心类库封装了的……2.0的在1.1上照样能用。 --------------------编程问答-------------------- --------------------编程问答--------------------
求真相~~~ --------------------编程问答-------------------- 我也想知道 --------------------编程问答-------------------- 我也想知道 --------------------编程问答-------------------- winform的项目做得少,大都做做小应用,好奇进来看看 --------------------编程问答-------------------- 腾讯的面视都如此垃圾,可见中国的软件公司都这样了。作为面视官,问这个题目来面视别人,就已经表明了其人技术,境界不高。
这些表格的操作真的很重要吗?面视还需要上机去调试吗? --------------------编程问答--------------------
那面试应该问什么? --------------------编程问答-------------------- 额呵 路过路过 --------------------编程问答-------------------- 为什么我的世界没有 你
--------------------编程问答-------------------- --------------------编程问答-------------------- 笑话,这么简单的问题,放心吧,几乎没有公司会把技术面试当做技术攻关会议的 --------------------编程问答-------------------- 学习了
--------------------编程问答--------------------
这句有点意思 --------------------编程问答-------------------- B/S的飘过
高级项目工程师问这种东西? --------------------编程问答-------------------- 不会 但是感觉也很困难 同情 --------------------编程问答-------------------- 除非在项目中做到过,一般情况下,也没人去研究这个吧,是我我也不会,哈哈 --------------------编程问答-------------------- 其实面试上机的情况都很正常,我发现 现在在国内的软件行业 在开始重视解决问题的能力和工作经验,文聘的比重在慢慢降低。所以面试上机的情况会有的。但我想上机的问题应该是一些有处理技巧或者考验经验的地方,一般不会有多困难。如果太难的话,估计面试官想刁难你或看你笑话了,这个时候就看你临机应变的能力了。 --------------------编程问答-------------------- mark... --------------------编程问答--------------------
顶 --------------------编程问答-------------------- 上机的时候是否可以同时上网. --------------------编程问答--------------------
+1 我就觉得这功能蛮差劲的,改变就改变了所有,有时候只想把其中的某些字做下标注,这功能不能实现 --------------------编程问答-------------------- 高级还要做这个? qq很难混啊
--------------------编程问答-------------------- 面试官出来之前,都做了深刻的工作,他的问题既不会太难也不会太简单。否则都起不到考察的作用。
楼上的各位,看了大家的回复,一个感觉:你们真能装B。 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- 记得3年前去面试微软,结束时面试官很担忧地对我说:你这个年龄,还在做开发,又这么多东西不会,应该选择一些行业顾问的职位了。否则,危险!
当时我被打击的如世界末日,那时我妻子还刚刚怀孕。
不过今天我依然在做开发,拿着还过得去的工资。
结论:你不适合一个超级优秀的国度,不表示你就不适合生存。还有,面试官不是上帝。
--------------------编程问答-------------------- 。。。
调用gdi函数画么。。
--------------------编程问答-------------------- mark,学习了! --------------------编程问答-------------------- 不是所有的问题都适合面试的,工具的使用培训一下不就是OK了,最重要的还是其他层面的东西。 --------------------编程问答--------------------
支持,有些面试一聊一看就算了。
WINFROM DATAGRIDVIEW 这种问题不能证明你的能力只能证明你对 WINFROM DATAGRIDVIEW 的熟练程度。 --------------------编程问答-------------------- 挺难的 --------------------编程问答-------------------- 高级项目工程师的面试应该会比较难吧,相信lz还是很牛的人 --------------------编程问答-------------------- 我感觉我什么都不会 --------------------编程问答-------------------- 大家各抒己见 吾等完全看不懂啊....
补充:.NET技术 , C#