((CrystalDecisions.CrystalReports.Engine.TextObject)this.CrystalReport11.Section1.ReportObjects["Text1"]).Font.Size= 10;

解决方案 »

  1.   

    本來不想回答類似指定某某誰高手來回答之類的問題,不過算了,給你一個正確答案,測試絕對通過:
    本來設置文本對象共用屬性,比如顏色、位置等可以很方便地在.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來改變字體大小。