((CrystalDecisions.CrystalReports.Engine.TextObject)this.CrystalReport11.Section1.ReportObjects["Text1"]).Font.Size= 10;
解决方案 »
- 接口与类
- 网页发送消息到手机 做不好就辞职
- webclient得到「405不允许的方法」
- VS2008里在New Project里有一个Distributed Systems,请问有人用过吗?谈谈体会
- asp.net/C#如何把查询到的结果导出成txt文件
- (140分) 面向对象方法学关于C#入门基础概念的几个小问题 抢答送分 很简单 明天结贴
- 求一个字符串转换成数组的方法,估计要用正则表达式
- dock技术
- 如何改变ListBox某一项的显示??
- 使用NuGet,点击Add library package Reference按钮报“the project '' is unspported”,怎么解决?
- 一个很奇怪的问题,关于dataset自增字段。
- 光标阅读机开发的问题
本來設置文本對象共用屬性,比如顏色、位置等可以很方便地在.NET裡用代碼動態設定,但字體大小屬於隻讀屬性,是無法直接用代碼動態設置的,但.NET不行,不代表水晶報表不行,所以我們可以通過水晶報表本身的公式字段和參數字段共同設置來完成這個“不可能的任務”。
forgot先在水晶報表裡面添加一個參數字段,比如"FontSize",要記住設置成不允許范圍值和多重值,然後,右鍵點你需要改變的文本對象(當然,Field對象也可以),設置字體大小公式為{?FontSize}。
你可能要問:為什麼要這樣設置呢?因為參數字段是跟.NET外接程序交互的,但水晶報表內部的屬性是靠公式字段動態控制的,所以要同時使用參數字段和公式字段。
好了,現在我們可以寫代碼了,比如我要修改字體大小為16pt,可以在程序中這樣寫:
SetFontSize(16);
附處理子例程:
private void SetFontSize(int setfontsize)
{
ParameterFields parameterFields = cRV.ParameterFieldInfo;
ParameterValues currentParameterValues = new ParameterValues();
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = setfontsize;
currentParameterValues.Add(parameterDiscreteValue);
ParameterField parameterField = parameterFields["FontSize"];
parameterField.CurrentValues = currentParameterValues;
}注意, CRV是CrystalReportViewer的ID,強烈建議你在Page_Load中先執行一次SetFontSize函數,指定缺省的字體大小,不然水晶報表會提示要求你輸入參數的,然後你可以在其他過程中隨意調用SetFontSize來改變字體大小。