0

我是C#編程和Crystal Report中的新手。 我遇到了一個問題,要發送一個用戶從WinForm輸入的值,以通過C#(VS10)在Crystal Report上顯示。我只需要將輸入值顯示爲報表標題中的文本對象。我已經尋找解決方案,但我仍然不知道我的代碼中有什麼問題。通過C#從winform傳遞一個值到水晶報表文本對象#

我創建了一個連接到它的查看器的水晶報告。 這裏是我的WinForm的代碼

private void btnSubmit_Click(object sender, EventArgs e) 
{ 
    crRpt TI = new crRpt();    
    CrystalReportViewer crv = new CrystalReportViewer(); 

    TextObject tiNo = (TextObject)TI.ReportDefinition.Sections["Section2"].ReportObjects["TIN"]; 
    tiNo.Text = txtTI.Text.toString(); 
    crv.Visible = false;    
    crv.ReportSource = TI; 
    ShowDialog(crv);      
} 

它返回一個錯誤說:

形式,是早已不能顯示爲模式對話框可見。在調用showDialog之前,將表單的visible屬性設置爲false。

即使我已經把 - > crv.visible = false。

我從Crystal Report Viewer中看到,WinForm自動生成一個代碼來顯示連接到excel文件作爲其數據源的報告。 如果我添加2行代碼轉換成代碼的底部象下面這樣:

displayCR_form dispCR = new displayCR_form(); 
dispCR.ShowDialog(); 

和備註 - >的ShowDialog(CRV);

該報告將顯示,但仍與我已分配的空白文本對象一起顯示。 我錯過了什麼?請幫忙。謝謝。

+0

根據MSDN的 「的CrystalReportViewer」 是一個用戶控件。要顯示「對話框」,你需要一個窗口。什麼是「displayCR_form」? –

+0

您的報告是否使用存儲過程?如果是這樣,你可以將文本傳遞給你的proc作爲變量,並以這種方式顯示在報告中? –

+0

@Björn我得到了我的錯誤。displayCR_form是一個winform,裏面有CR查看器。 我把CR瀏覽器放在texbox放置的同一個winform中。它解決了這個問題。感謝你們 – redsuitee

回答

0
private void btnSubmit_Click(object sender, EventArgs e) 
{ 
    crRpt TI = new crRpt();    
    CrystalReportViewer crv = new CrystalReportViewer(); 
    Form frmCrViewer = new Form(); 
    frmCrViewer.Controls.Add(crv); 

    TextObject tiNo = (TextObject)TI.ReportDefinition.Sections["Section2"].ReportObjects["TIN"]; 
    tiNo.Text = txtTI.Text.toString(); 
    crv.ReportSource = TI; 
    crv.Dock = Fill; 
    frmCrViewer.ShowDialog(); 
}