Windows Form中的TabControl重绘

旧地址:http://blog.canself.com/drawtabcontrol/

最近整理自己工作以来的旧项目,将其中的一些技术点整理出来。这个tabcontrol重绘相关的项目是自己毕业不久就做的一个,针对这个项目后面还有wpf版,暂且不提,暂时先看这个。

下面是软件的主界面,当然这个重绘的还不够完全,针对tabcontrol边框的处理还不好。

可以看出,也有一定效果的。😉

下面说说步骤,看看代码:

1、首先就是设置tabcontrol的drawmode属性,使其重绘有效。

1
this.tabc_draw.DrawMode = TabDrawMode.OwnerDrawFixed;

2、写tabcontrol的drawitem事件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
void tabc_draw_DrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = e.Graphics;

TabPage changedpage = tabc_draw.TabPages[e.Index];//当前处理标签
Rectangle backrect = tabc_draw.GetTabRect(e.Index);//标签背景区域
Brush backbrush;//标签背景色
Brush fontbrush;//标签字体颜色
Font tabFont;//标签字体
Pen borderpen;//边框颜色

//TabControl绘制
Brush backtabcontrol = new SolidBrush(Color.Black);
g.FillRectangle(backtabcontrol, this.tabc_draw.ClientRectangle.X + 100, this.tabc_draw.ClientRectangle.Y, this.tabc_draw.ClientRectangle.Size.Width, this.tabc_draw.ItemSize.Height);
backtabcontrol.Dispose();

if (e.State == DrawItemState.Selected)
{
backbrush = new SolidBrush(Color.Black);
fontbrush = new SolidBrush(Color.Yellow);
tabFont = new Font("宋体", 15, FontStyle.Bold, GraphicsUnit.Pixel);
borderpen = new Pen(Color.LightBlue);
}
else
{
backbrush = new SolidBrush(Color.White);
fontbrush = new SolidBrush(Color.Red);
tabFont = new Font("楷体", 15, FontStyle.Bold, GraphicsUnit.Pixel);
borderpen = new Pen(Color.DarkGreen);
}
//绘制标签背景
g.FillRectangle(backbrush, backrect);

//绘制标签字体
StringFormat _StringFlags = new StringFormat();
_StringFlags.Alignment = StringAlignment.Center;
_StringFlags.LineAlignment = StringAlignment.Center;
g.DrawString(changedpage.Text, tabFont, fontbrush, backrect, new StringFormat(_StringFlags));
//绘制非标签原始名称【可依据e.State修改】 g.DrawString("呵呵", tabFont, fontbrush, backrect, new StringFormat(_StringFlags));

//绘制标签边框
//backrect.Offset(1, 1);
//backrect.Inflate(2, 2);
g.DrawRectangle(borderpen, backrect);

backbrush.Dispose();
tabFont.Dispose();
fontbrush.Dispose();
borderpen.Dispose();
}

注释都在代码里了,就不详述了。下面是最后的效果的【只是简单的实现,自己多写写,模仿下就可以写出好效果啦】

修改outlook中ost文件位置

旧地址:http://blog.canself.com/modifyostpath/

outlook2013没法直接修改ost文件位置,故修改注册表以使outlook可以配置ost文件目录。

修改注册表内容如下:

1
2
3
位置:HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook
键:ForcePSTPath
值:D:\DataFiles\EmailFiles

以下是bat文件,可以直接下载双击使用:下载地址1下载地址2

其他解决方案网址:

运用组策略修改Outlook 2013默认的ost数据文件位置

如何修改Outlook2013数据文件(.ost)位置的方法

一些有用的DOS相关命令

旧地址:http://blog.canself.com/somedos/

驱动器格式转换:

1
convert x: /fs:ntfs

修改文件后缀名:

1
ren *.* *.jpg

一键清理bat内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
echo 正在清理系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清理系统垃圾完成!
echo. & pause

解决Outlook 2013无法删除问题

旧地址:http://blog.canself.com/outlook2013_del_error/

问题描述:使用qq邮箱时,删除邮件【del或右键删除】,总是提示“无法执行操作,因为对象已被删除”。

原因:个人一直以为是自己倒腾outlook修改存放路径,经常添加删除账户导致的,但网上查询问题时,又感觉其他人好像不是这个原因——故无法确定原因。

解决:

初始解决方案【非根本方法】:自己瞎倒腾,彻底删除——直接按shift+delete。

最终解决方案【完全解决】:在视图里设置显示为对话——可以把勾选在去掉——问题已经解决。

参考网址:无法执行操作 因为对象已被删除

笔记本emachines D725/D525拆机

螺丝分布:

部件 个数 颜色 长度大小 卸螺丝顺序
硬盘及内存条盖 此处螺丝固定在面板上,不予描述 1
3
1
无线网卡后盖 背部那个小长块 2
1
整体后盖 11 3
网卡 1 4
显示器 1 特长 5
显示器下方 2 中等偏小[可能做工问题] 6

注:取下硬盘盖后,需要取出内存条等不予详述;无线网卡亦是。

关于大脑的惯性惰性

旧地址:http://blog.canself.com/lazybrain/

以下文章为瞎扯的:专用忽悠

为什么出现死读书 学习比较深,速度慢,促使大脑产生惰性,运转速度减缓

而平时不好好学习的人,有些人考试之前一点点时间就得把一学期东西学完,这就促使他的大脑不得不快速运转,纵然不会学的很透彻

而在学习知识上,学习新的知识,需要大脑高速运转才能更快的接收

所以有些人纵然学校里学习优秀,但其学习能力却不一定强,进入社会会难以适应,但是我认为这不应该成为问题,因为他能够更为深入的学习一门知识,只是他需要做的是克服在学校养成的大脑惰性,毕竟在信息时代,需要快速学习能力,但你也需要有一门精通的本事,而不是所有都浅尝辄止。

这类人一旦克服了其大脑惰性,我认为其发展前途杠杠的,而有许多人往往会逃避,当然,如果逃避去做科研类还是可能有良好发展的,毕竟其有深入学习的能力,毕竟在其所学习的领域里,他的学习接收速度比一般人要快,但这不代表大脑运行速度快,也许是部分运行快。

【瞎译】网站搜索引擎优化——Wix

旧地址:http://blog.canself.com/pumpup_site_seo/

什么事SEO:搜索引擎优化是为了让你的网站尽可能多的显示在搜索引擎的结果中。【Wix为此提供工具】

1、选择最能描述你网站内容的词语

当人们使用google搜索时,都是输入关键字来进行搜索;google将含有这些关键字的网站显示出来。

当别人需要搜索到与你网站相关内容时,他们会搜什么词语?你自己最了解自己的网站,列出你网站内容的关键词。

可以通过Google Adword Keyword Planner来验证关键字的有效性

2、优化搜索结果内容显示

google搜索结果显示你网站的标题及描述,设置网站关键字等信息有助于他人搜索。

Wix SEO设置:Settings——SEO(Google)

a)打开SEO——这样搜索引擎才会搜索你的网站

b)设置标题——Google搜索显示

c)设置描述——Google描述显示

d)设置关键字——10个关键字

3、更新你的网站内容

搜索引擎需要提供准确的搜索结果,他们会检索你网站里的内容。为了保证你网站的搜索,你要做以下几点:

a)经常更新网站内容

b)尽量原创——不要直接从其他网站复制

c)词语检测,保证没有拼写等,避免粗心导致的错误

d)添加一些图片,更生动的描述内容

4、绑定自己的域名

有自己独立的域名,更容易被搜索引擎搜索到。

原文地址:Pump Up Your Site’s SEO——来自Wix

关于Windows Live Writer的代码高亮插件bug修改

旧地址:http://blog.canself.com/codehighlight_wlwplugin/

背景:在使用WLW向自己Wordpress网站发布文章后,第二次修改,在修改代码时总是会把<pre>标签一起放到code中;同时,其中的‘<’符号亦是使用html里的符号,修改代码会很不方便。【插件为针对SyntaxHighligter进行开发】

不得以下载SourceCode plugin for Windows Live Writer源码自行修改。

其中主要修改了两个代码段

1、修改<pre>标签总是被处理到代码区问题【原因为自己博客那边传过来的pre转大写了】

1
2
3
4
5
6
7
8
//在CodeForm.cs文件的Code属性的set中修改
//修改前:
int preFrom = value.IndexOf(prePrefix);
int fromPos = value.IndexOf(preSuffix);

//修改后:
int preFrom = value.ToLower().IndexOf(prePrefix);
int fromPos = value.ToLower().IndexOf(preSuffix);

2、修改“<”等符号表示为html中的格式【对传入的content进行格式转换——见高亮代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//修改SourceCodePluginl.cs文件中的CreateContent方法
public override DialogResult CreateContent(IWin32Window dialogOwner, ref string content)
{
DialogResult result = DialogResult.Cancel;
content = HtmlServices.HtmlDecode(content);
using (CodeForm form = new CodeForm(content))
{
result = form.ShowDialog(dialogOwner);
if (result == DialogResult.OK)
{
content = form.Code;
}
}
return result;
}

SourceCode plugin for Windows Live Writer源码地址:点击进入

更改后的插件下载:下载地址1下载地址2

网盘同步标志消失解决办法

旧地址:http://blog.canself.com/lostsyncsign/

背景:有一段阵子自己玩大量的网盘(同步型),然后机子上装了很多个,然后就发现有些网盘后面打开后文件夹上的“已同步”等同步状态标志不见了。一阵搜索,找到问题所在。

问题出现原因:windows注册表共支持15个覆盖到overlayIcon,安装过多的类似同步盘的软件,就易发生冲突。如我现在装了百度同步盘(占用3个),小乌龟SVN(数了下9个)。【overlayIcon就是文件夹或文件左下角那个状态标志】

自己可以查看注册表看看自己用了多少:

win+R打开运行——输入regedit回车——进入注册表——转到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 注册表项下。

解决:自己看看想保留那些,删除不想要的,最后注销或重启时其生效。

注:快速生效——关闭explorer.exe后重新运行explorer.exe

Canself 标记: 金山快盘同步标志不见,恢复dropbox文件同步标志