2

我在水晶报表中有许多相同的文本对象,我想使用 c#.net 更改它们的文本这是我的代码:

TextObject textObj = (TextObject)MyReport.Sections[2].ReportObjects[3];

但我不能改变文字textObj

4

4 回答 4

8

我不认为您引用文本对象的位置而不是它的名称。所以尝试类似:

CrystalDecisions.CrystalReports.Engine.TextObject txtReportHeader;
txtReportHeader = MyReport.ReportDefinition.ReportObjects["txtHeader"] as TextObject;
txtReportHeader.Text = "My Text";

“txtHeader”将是报告中文本对象的名称。

编辑:您可以在运行时更改文本的值。您无需删除和创建新标签。我修改了代码以适用于我的一份报告,并将标签“locid”更改为“我的文本”。见截图。这是代码:

using CrystalDecisions.ReportSource;
using CrystalDecisions.CrystalReports.Engine;


CrystalDecisions.CrystalReports.Engine.TextObject txtReportHeader;
            txtReportHeader = CrystalReportSource1.ReportDocument.ReportDefinition.ReportObjects["text3"] as TextObject;
            txtReportHeader.Text = "My Text";

在此处输入图像描述

于 2013-11-09T13:08:01.813 回答
3

在 C# 中运行时更改 Crystal Report textObject 值的最佳和最简单的方法

MyReport 是您的 crystalReport 对象

(MyReport.ReportDefinition.ReportObjects["YorTextObjectName"] as TextObject).Text = "YorStringValue";
于 2016-08-11T07:37:22.297 回答
0
TextObject txt;
txt = (TextObject)rd.ReportDefinition.ReportObjects["Text1"];
txt.Text = "Your Text";
于 2018-05-24T13:28:37.333 回答
-1

文本对象的文本不能改变我的朋友。我认为最好的方法是你创建另一个文本对象,然后删除你的第一个文本对象,试试这个代码:

TextObject textObj = (TextObject)MyReport.Sections[2].ReportObjects[3];
string newString = "any thing which you want write as your text";
TextObject newTextObj = MyReport.Sections[2].AddTextObject(newString, textObj.Left, textObj.Top);
newTextObj.Height = textObj.Height;
newTextObj.Width = textObj.Width;
newTextObj.Font = textObj.Font;
MyReport.Sections[2].DeleteObject(textObj);
于 2013-11-09T13:48:28.397 回答