C#开发小技巧--对Text控件增量赋值的代码优化

技巧|控件|优化

笔者在开发一个小程序的时候,遇到一个需求,就是要把指定的文本内容打开,逐行判断、组装后再显示在Text控件中。
起初,笔者使用
while(streamreader.Peek()>0)
{
...
textBox1.Text += strline;
}
streamreader.close();
在运行的过程中无错误,可是在装载数据的时候效率低下,装载1000行的记录居然需要15秒左右,大大的影响了使用。
在调试过程中,笔者发现,streamreader.Open函数调用并不怎么需要耗时,而循环读完这1000行数据的耗时也不到1秒,因此,把耗时的操作锁定在textBox1.Text+=strline上,猜想,可能是textBox1.Text在声明时分配了一定的内存,在每次赋值的过程中可能又需要重新分配内存,因textBox1控件所占空间比较大,因此重新分配内存占用了大部分的时间。
为了证实这个猜想,笔者把程序修改为:
string strData="";
while(streamreader.Peek()>0)
{
...
strData+= strline;
}
textBox1.Text=strData;
streamreader.close();
经调试运行,在加载1000行记录的数据文件仅需要1秒钟左右的时间。
这个案例说明,对控件、类属性需要增量赋值时,最好先赋值到一个变量,然后再将变量的值赋给控件、类属性,以避免因为频繁修改控件、类属性而频繁修改内存而导致效率低下。

时间: 2024-08-04 02:53:10

C#开发小技巧--对Text控件增量赋值的代码优化的相关文章

VC小技巧汇总之控件技巧_C 语言

本文搜集汇总了VC小技巧的控件技巧,对于进行VC开发来说有一定的借鉴价值,具体如下: 1.如何隐藏和显示控件 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件. 例1: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号 pWnd->ShowWindow( SW_HIDE ); //隐藏控件 例2: CWnd *pWnd; pWnd = GetDlgItem( I

JS获取页面input控件中所有text控件并追加样式属性_javascript技巧

如题,将使用jquery来在页面加载时获取页面input控件中所有text控件并添加样式. 以前写过的页面上所使用的text控件width属性太小需要改动,改动牵扯页面上所有text的属性,改动每个控件的width感觉会很麻烦,所以就想通过在页面加载的时候将要改动的text找到并添加属性. 首先先写了一个css样式: 复制代码 代码如下: .wid { width:205px; } 在页面加载中所写的代码如下: $("input[type=text]").addClass("

ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇

事件冒泡 我们上一篇已经开发一个登录的组合控件,但是我们把控件的事件的这个问题没有解决,现在我们就 来看看这个问题. 因为我们的组合控件Login是由一些已经存在的服务器控件的组合的,这样就省却了我们很多的麻烦, 上篇中我们已经把子控件的一些属性,如Text等,显示呈现为了组合控件的属性.我们将之称为"属性的 冒泡"(我自己这样认为的). 我们现在来想下:其实我们点击"提交"按钮,我们就想把控件中信息发送给服务器,然后验证.即 ,我们点击的是"提交&quo

Android实现在列表List中显示半透明小窗体效果的控件用法详解_Android

本文实例讲述了Android实现在列表List中显示半透明小窗体效果的控件用法.分享给大家供大家参考,具体如下: Android 在列表List中显示半透明小窗体效果的控件,多的不多直接上代码,要说的都在注释里了: import com.hiapk.market.R; import android.content.Context; import android.graphics.PixelFormat; import android.os.Handler; import android.view

Silverlight 游戏开发小技巧:传送点特效制作

前面我们使用投影(Projection)完成了一个升级的特效,Silverlight故事板动画相当的容易,这次我们将详细说说故事板动画的帧制作,完成一个循环的传送点特效,大家都知道,在游戏中,传送点一般是固定在某一个地方,循环播放,它通常表明这里会有一个事件之类的特殊地点,我们将用前面的升级特效稍微改造,就可以得到了: 这个系列只是有关于游戏开发的小技巧,相比纯粹的技术文章要简单一些,我个人感觉可能更加偏向于Blend美工方面的工作,能够为各位Silverlight开发者带来一些新的思路,就是一

一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单

网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单,在桌面游戏还停留在四态按钮的时候,网页应用都已经入动感时代了,这次,使用Silverlight实现一个小菜单,体验一下动感吧 当鼠标移入的时候,目标的图标就会放大,形成一个阶梯的效果,要实现这个效果,将需要使用自定义控件和StackPanel的知识. 现在在一个Silverlight工程中添加新控件

一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单2

动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好,非常感谢各位,而今天这篇的动感小菜单2,让按钮更加动感"柔"顺:)期望能做的更好吧. 我们可以直接借助昨天的工程,在上面的基础上修改,打开昨天的工程(Silverlight 游戏开发小技巧:动感小菜单): 直接选定一个StackPanel的Group,然后按住Alt键复制一个,为了方便编程,这次我们将它制作成一个控件: 在结构里面直接选择刚

Sil“.NET研究”verlight 游戏开发小技巧:动感小菜单2

动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好,非常感谢各位,而今天这篇的动感小菜单2,让按钮更加动感"柔"顺:)期望能做的更好吧. 我们可以直接借助昨天的工程,在上面的基础上修改,打开昨天的工程(Silverlight 游戏开发小技巧:动感小菜单): 直接选定一个StackPanel的Group,然后按住Alt键复制一个,为了方便编程,这次我们将它制作成一个控件: 在结构里面直接选择刚

一起谈.NET技术,Silverlight 游戏开发小技巧:传送点特效制作

前面我们使用投影(Projection)完成了一个升级的特效,Silverlight故事板动画相当的容易,这次我们将详细说说故事板动画的帧制作,完成一个循环的传送点特效,大家都知道,在游戏中,传送点一般是固定在某一个地方,循环播放,它通常表明这里会有一个事件之类的特殊地点,我们将用前面的升级特效稍微改造,就可以得到了: 这个系列只是有关于游戏开发的小技巧,相比纯粹的技术文章要简单一些,我个人感觉可能更加偏向于Blend美工方面的工作,能够为各位Silverlight开发者带来一些新的思路,就是一