Jaxu 2012-01-04 10:34
[quote]救火夫:
只谈缺陷,不谈优点……
缺少格式化(1还是01?);
添加一些比较方法。[/quote]
多谢评论!
救火夫 2011-12-31 10:59
只谈缺陷,不谈优点……
缺少格式化(1还是01?);
添加一些比较方法。
Jaxu 2011-12-08 09:12
[quote]永远的阿哲:LZV5,我使用的3.2版,又发现了一个方法:CriteriaTransformer.TransformToRowCount(query)[/quote]
多谢支持!!
永远的阿哲 2011-12-06 14:33
LZV5,我使用的3.2版,又发现了一个方法:CriteriaTransformer.TransformToRowCount(query)
Jaxu 2011-11-28 17:02
貌似能支持2.0的地方不多噢。
Jaxu 2011-11-28 17:02
[quote]小胖2010:分组的功能是xlst 2.0的规范吧。.NET提供xslt的api只支持1.0的,无法分组转换啊。[/quote]
2.0可以直接实现分组,不过本文介绍的是在1.0的环境下如何实现分组的技巧。
399601829 2011-11-28 16:56
嗯,不错! 很少看到有人写 xslt 之类的文章!www.rlly.net
小胖2010 2011-11-28 16:55
分组的功能是xlst 2.0的规范吧。.NET提供xslt的api只支持1.0的,无法分组转换啊。
Jaxu 2011-11-28 15:48
[quote]jwang:嗯,不错! 很少看到有人写 xslt 之类的文章! 我也在用 ![/quote]
写过好几篇有关XSLT的文章了,算是一些积累吧。
Jaxu 2011-11-28 15:48
[quote]xluo:楼主也做xslt?[/quote]
做了很久的XSLT了,如果有好的东西也拿出来大家分享分享!
jwang 2011-11-28 13:36
嗯,不错! 很少看到有人写 xslt 之类的文章! 我也在用 !
xluo 2011-11-28 13:17
楼主也做xslt?
Jaxu 2011-11-16 12:31
[url=http://msdn.microsoft.com/en-us/library/dd583143(v=office.11).aspx]http://msdn.microsoft.com/en-us/library/dd583143(v=office.11).aspx[/url]
SharePoint DataView WebPart,基于安全考虑,不允许在XSL文件中使用msxsl:script标记,所有的扩展代码必须使用标准的XSLT标记。
另外,在DataView WebPart的XSLT transformation中,不允许使用xsl:include和xsl:import功能。
Jaxu 2011-11-04 19:05
[quote]羊崽崽:如何对多个版本的Office 操作 这个好像只对 Office 2010有效[/quote]
调用Office需要使用到COM组件,因此无法同时对多个版本的Office进行操作。不过我觉得你可以在程序中通过反射动态加载COM组件来解决这个问题,根据用户安装的Office版本来选择加载不同版本的COM组件。
羊崽崽 2011-11-02 10:02
如何对多个版本的Office 操作 这个好像只对 Office 2010有效
Jaxu 2011-10-29 12:03
@FlyDragon
看看这个是不是你想要的?
[url=http://www.microsoft.com/download/en/details.aspx?id=8227]http://www.microsoft.com/download/en/details.aspx?id=8227[/url]
FlyDragon 2011-10-28 10:46
[quote]Jaxu:
[quote]Staid:IIS Smooth Streaming Player Development Kit 下载不了了[/quote]
这个工具当时应该是一个测试版,现在不知道是否已经有正式版了,你去微软的官方站点上搜搜看,我现在手头上也没有这个工具了。[/quote]
Default 页面还有没?
Jaxu 2011-10-08 15:24
建议使用下面的X-UA-Compatible标签:
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
IE=edge告诉IE使用最新的引擎渲染网页,chrome=1则可以激活Chrome Frame。
[b]什么是Chrome Frame?[/b]
Chrome Frame可以让旧版IE浏览器使用Chrome的WebKit渲染引擎处理网页,因此旧版IE用户可以体验包括HTML5在内的众多现代网页技术。
Jaxu 2011-10-08 15:21
其它可能的用法还有:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />
milotene 2011-08-11 13:37
MARK
马赛克
鹤冲天 2011-08-08 09:37
@Jaxu
对软件使用者来说功能满足就行了,使用 real progressbar 和 animation gif picture 有什么区别?你给他个 gif 他又能如何分辨出来?
没有蛋疼的客户,只有蛋疼的程序员。
没有蛋疼的需求,只有蛋疼的设计。
Jaxu 2011-08-08 09:20
[quote]鹤冲天:
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?[/quote]
为了适应需求。我无语了![/quote]
什么逻辑?gif 就不适应需求了?[/quote]
强调说要使用real progressbar rather than the animation gif picture。[/quote]
谁这么蛋疼强调要用 real progressbar? 你之前也没说啊![/quote]
文章强调的是说如何在后台程序无法报告进度的情况下使用ProgressBar,给出的是一个解决方案!如果大家能给出更好的解决方法,不妨发出来一起学习下。41楼的方法不错,你说的这个使用gif图片也是一种方法。解决问题可以尝试使用不同的方法,方法多固然是好事,但是也要看是否能满足软件使用者的要求。
感谢参与评论!
鹤冲天 2011-08-08 09:10
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?[/quote]
为了适应需求。我无语了![/quote]
什么逻辑?gif 就不适应需求了?[/quote]
强调说要使用real progressbar rather than the animation gif picture。[/quote]
谁这么蛋疼强调要用 real progressbar? 你之前也没说啊!
Jaxu 2011-08-08 08:48
[quote]鹤冲天:
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?[/quote]
为了适应需求。我无语了![/quote]
什么逻辑?gif 就不适应需求了?[/quote]
强调说要使用real progressbar rather than the animation gif picture。
鹤冲天 2011-08-08 06:51
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?[/quote]
为了适应需求。我无语了![/quote]
什么逻辑?gif 就不适应需求了?
誓言的爱 2011-08-08 01:44
[quote]arechs:
[quote]誓言的爱:
[quote]Jaxu:
[quote]菜鸟进博客园眼花撩乱:
如果不知道具体时间
把ProgressBar的Style设置为Marquee就可以了[/quote]
对,但是需要在多线程中执行后台程序,否则你的进度条会被卡死。[/quote]
使用了BackgoroundWorker,还需要额外的再强调多线程吗?[/quote]
楼主以为别人都不懂多线程,特意强调下。[/quote]
呵呵,哦,谢谢这位大哥指点迷经。
Jaxu 2011-08-07 23:08
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?[/quote]
为了适应需求。我无语了!
鹤冲天 2011-08-07 22:58
[quote]Jaxu:
@鹤冲天
了解。如果不使用gif图片呢?[/quote]
使用 gif 简单,为什么不用呢?为什么非要找麻烦呢?
Jaxu 2011-08-07 22:38
[quote]鹤冲天:
[quote]Jaxu:
[quote]arechs:
[quote]誓言的爱:
[quote]Jaxu:
[quote]菜鸟进博客园眼花撩乱:
如果不知道具体时间
把ProgressBar的Style设置为Marquee就可以了[/quote]
对,但是需要在多线程中执行后台程序,否则你的进度条会被卡死。[/quote]
使用了BackgoroundWorker,还需要额外的再强调多线程吗?[/quote]
楼主以为别人都不懂多线程,特意强调下。[/quote]
作为初学者,可能真的不知道这个。[/quote]
无语了!在楼主看来,博客园里都是初学者。[/quote]
自然有初学者会看嘛!
鹤冲天 2011-08-07 22:36
[quote]Jaxu:
[quote]arechs:
[quote]誓言的爱:
[quote]Jaxu:
[quote]菜鸟进博客园眼花撩乱:
如果不知道具体时间
把ProgressBar的Style设置为Marquee就可以了[/quote]
对,但是需要在多线程中执行后台程序,否则你的进度条会被卡死。[/quote]
使用了BackgoroundWorker,还需要额外的再强调多线程吗?[/quote]
楼主以为别人都不懂多线程,特意强调下。[/quote]
作为初学者,可能真的不知道这个。[/quote]
无语了!在楼主看来,博客园里都是初学者。
Jaxu 2011-08-07 22:36
[quote]鹤冲天:
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
老大,使用多线程和你将图片放在PictureBox中并没有直接的联系呀,看下面的代码:...[/quote]
[quote]Jaxu:
@鹤冲天
这里是使用BackgroundWorker在多线程中显示gif图片的代码,你可以比较一下(建议最好亲自试一下),UI线程不会因为后台的执行线程而被阻塞。[/quote]
[b]老兄,这就是你让我也试的东西吗?
我只是说使用 gif 动画图片比你的方案要简单,我去试这些做什么?
耗时操作自当放在单独线程中处理,如若连这个都不知,还有资格在博客园混吗,你也太小...[/quote]
随你,不想试就不试啰。
鹤冲天 2011-08-07 22:33
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
老大,使用多线程和你将图片放在PictureBox中并没有直接的联系呀,看下面的代码:...[/quote]
[quote]Jaxu:
@鹤冲天
这里是使用BackgroundWorker在多线程中显示gif图片的代码,你可以比较一下(建议最好亲自试一下),UI线程不会因为后台的执行线程而被阻塞。[/quote]
[b]老兄,这就是你让我也试的东西吗?
我只是说使用 gif 动画图片比你的方案要简单,我去试这些做什么?
耗时操作自当放在单独线程中处理,如若连这个都不知,还有资格在博客园混吗,你也太小看我了吧。[/b][/quote]
没有小看你的意思,写文章就是为了促进大家相互学习交流嘛!今天看到大家这么热心地对我的文章进行评论,收获也不小呀,学习了。[/quote]
那你让我看这些代码作什么用?!还要我亲自试下!?
Jaxu 2011-08-07 22:31
@鹤冲天
了解。如果不使用gif图片呢?
鹤冲天 2011-08-07 22:29
[quote]Jaxu:
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
如果不在多线程中使用进度条,你觉得在WinForm中你的gif图片会动吗?你可以去试试看。[/quote]
[b]我也没说不让你用多线程。
只是觉的你的第二种方法,使用不恰当,而且麻烦,为了显示一个进度条,还要搭上一个 Timer,无端增加了程序的复杂度,值吗?[/b][/quote]
抛砖引玉了,如果有更好的处理办法不妨发出来大家学习下![/quote]
更好的方法当然有,早就发在一楼了!
Jaxu 2011-08-07 21:59
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
老大,使用多线程和你将图片放在PictureBox中并没有直接的联系呀,看下面的代码:...[/quote]
[quote]Jaxu:
@鹤冲天
这里是使用BackgroundWorker在多线程中显示gif图片的代码,你可以比较一下(建议最好亲自试一下),UI线程不会因为后台的执行线程而被阻塞。[/quote]
[b]老兄,这就是你让我也试的东西吗?
我只是说使用 gif 动画图片比你的方案要简单,我去试这些做什么?
耗时操作自当放在单独线程中处理,如若连这个都不知,还有资格在博客园混吗,你也太小看我了吧。[/b][/quote]
没有小看你的意思,写文章就是为了促进大家相互学习交流嘛!今天看到大家这么热心地对我的文章进行评论,收获也不小呀,学习了。
Jaxu 2011-08-07 21:52
[quote]鹤冲天:
[quote]Jaxu:
@鹤冲天
如果不在多线程中使用进度条,你觉得在WinForm中你的gif图片会动吗?你可以去试试看。[/quote]
[b]我也没说不让你用多线程。
只是觉的你的第二种方法,使用不恰当,而且麻烦,为了显示一个进度条,还要搭上一个 Timer,无端增加了程序的复杂度,值吗?[/b][/quote]
抛砖引玉了,如果有更好的处理办法不妨发出来大家学习下!
Jaxu 2011-08-07 21:51
[quote]arechs:
[quote]誓言的爱:
[quote]Jaxu:
[quote]菜鸟进博客园眼花撩乱:
如果不知道具体时间
把ProgressBar的Style设置为Marquee就可以了[/quote]
对,但是需要在多线程中执行后台程序,否则你的进度条会被卡死。[/quote]
使用了BackgoroundWorker,还需要额外的再强调多线程吗?[/quote]
楼主以为别人都不懂多线程,特意强调下。[/quote]
作为初学者,可能真的不知道这个。
Jaxu 2011-08-07 21:51
[quote]shuidao:
楼主貌似是想在后台线程卡住不能汇报进度的情况下,还想前台的progress更新进度。
其实,如果后台线程不能汇报进度,那么前台的progressbar更新与不更新已经没有意义了。尽管使用了多线程,ui不会卡死,但progressbar的进度怎么更新都是没有意义的。
这种情况下不如给一个超时时间, 让progressbar以这个超时的时间为最大值,然后来逐步更新进度,当时间到了,让用户选择是继续等待还是强行结束。[/quote]
不错的想法!
Jaxu 2011-08-07 21:48
@arechs
正解!
shuidao 2011-08-07 19:01
楼主貌似是想在后台线程卡住不能汇报进度的情况下,还想前台的progress更新进度。
其实,如果后台线程不能汇报进度,那么前台的progressbar更新与不更新已经没有意义了。尽管使用了多线程,ui不会卡死,但progressbar的进度怎么更新都是没有意义的。
这种情况下不如给一个超时时间, 让progressbar以这个超时的时间为最大值,然后来逐步更新进度,当时间到了,让用户选择是继续等待还是强行结束。
arechs 2011-08-07 17:34
[quote]誓言的爱:
[quote]Jaxu:
[quote]菜鸟进博客园眼花撩乱:
如果不知道具体时间
把ProgressBar的Style设置为Marquee就可以了[/quote]
对,但是需要在多线程中执行后台程序,否则你的进度条会被卡死。[/quote]
使用了BackgoroundWorker,还需要额外的再强调多线程吗?[/quote]
楼主以为别人都不懂多线程,特意强调下。
arechs 2011-08-07 17:30
[quote]Jaxu:
[quote]Herb:为什么不在 worker_DoWork 里异步修改进度条的值呢,还要开个Timer,浪费呀。[/quote]
worker_DoWork和进度条不在同一线程,跨线程操作会抛异常。[/quote]
解决跨线程的问题楼主不会吗?:
[code=csharp]
progressBar1.Invoke(new MethodInvoker(() => progressBar1.Value = 50));[/code]
但最好还是使用 BackgroundWorker.ReportProgress 方法。
鹤冲天 2011-08-07 16:54
[quote]Jaxu:
@鹤冲天
如果不在多线程中使用进度条,你觉得在WinForm中你的gif图片会动吗?你可以去试试看。[/quote]
[b]我也没说不让你用多线程。
只是觉的你的第二种方法,使用不恰当,而且麻烦,为了显示一个进度条,还要搭上一个 Timer,无端增加了程序的复杂度,值吗?[/b]
鹤冲天 2011-08-07 16:48
[quote]Jaxu:
@鹤冲天
老大,使用多线程和你将图片放在PictureBox中并没有直接的联系呀,看下面的代码:...[/quote]
[quote]Jaxu:
@鹤冲天
这里是使用BackgroundWorker在多线程中显示gif图片的代码,你可以比较一下(建议最好亲自试一下),UI线程不会因为后台的执行线程而被阻塞。[/quote]
[b]老兄,这就是你让我也试的东西吗?
我只是说使用 gif 动画图片比你的方案要简单,我去试这些做什么?
耗时操作自当放在单独线程中处理,如若连这个都不知,还有资格在博客园混吗,你也太小看我了吧。[/b]
xingxingxing 2011-08-07 12:29
用 yield return 不行嘛??
Jaxu 2011-08-07 11:22
@鹤冲天
这里是使用BackgroundWorker在多线程中显示gif图片的代码,你可以比较一下(建议最好亲自试一下),UI线程不会因为后台的执行线程而被阻塞。
[code=csharp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
BackgroundWorker worker = new BackgroundWorker();
public Form1()
{
InitializeComponent();
this.pictureBox1.Visible = false;
worker.WorkerReportsProgress = true;
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
int count = 100;
for (int i = 0; i < count; i++)
{
Thread.Sleep(100);
}
}
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.pictureBox1.Visible = false;
this.button1.Enabled = true;
MessageBox.Show("Complete!");
}
private void button1_Click(object sender, EventArgs e)
{
this.pictureBox1.Visible = true;
this.button1.Enabled = false;
worker.RunWorkerAsync();
}
}
}
[/code]
Jaxu 2011-08-07 11:16
@鹤冲天
老大,使用多线程和你将图片放在PictureBox中并没有直接的联系呀,看下面的代码:
[code=csharp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int count = 100;
for (int i = 0; i < count; i++)
{
Thread.Sleep(100);
}
}
}
}
[/code]
窗体上一共两个控件,一个是放了你给的那个gif图片的PictureBox,另一个就是Button。当你点击Button的时候,图片是不是会被卡死啊?
UI线程和后台执行线程必须分开,因为在一个线程中,CPU“同一时间只能做一件事件”,要么去更新UI,要么去执行后台程序。
鹤冲天 2011-08-07 10:10
[quote]Jaxu:
@鹤冲天
如果不在多线程中使用进度条,你觉得在WinForm中你的gif图片会动吗?你可以去试试看。[/quote]
我把 gif 图片通过 PictureBox 放在 WinForm 上,它自然就会动,和进度条什么关系?
用脚趾头想想,都知道 PictureBox 使用单独的线程来展示 gif 动画。
我去试什么,如何试?
Jaxu 2011-08-07 01:01
@誓言的爱
相反,如果你知道程序需要多长时间可以完成,比如从DataGridView导出1000行的数据到Excel,那么你可以在循环中触发BackgroundWorker的ProgressChanged事件,即每导出一行数据就去更新一下进度条。这个是很容易的,本文要讨论的问题是除了这种情况之外的问题!
Jaxu 2011-08-07 00:59
@誓言的爱
利用Timer定时器,过一段时间就去更新一次进度条,由于进度是你自己控制的,因此你知道什么时候到了80%,如果在80%的时候后台程序还没有完成,那么你在这里可以等待后台程序处理完成之后再在BackgroundWorker的RunWorkerCompleted事件中将进度条更新为100%。