ローカルのrdlcレポートで動作するコードを見つけようと試みた後、最終的には、テキストボックスコントロールのテキストサイズに応じて動的にフォントサイズを調整する関数を作成しました。この考え方は、固定寸法のテキストボックスコントロールのテキストサイズを測定することです。テキストの高さがテキストボックスコントロールの高さよりも高い場合は、テキストがコントロールに収まるまでフォントのサイズを縮小します。
まず、レポートプロパティでSystem.Drawingへの参照を追加する必要があります。
rdlcのすべてのコードは、vb.netで書かれている必要があります。レポートプロパティのCodeフィールドでは、これらの機能を追加します。そのフォントサイズ、あなたが動的とのFontSizeプロパティで変更したい
'1cm = 37.79527559055 pixels
Const cmToPx as Single = 37.79527559055F
Public Function setMaxFont(Text as string, boxWidth as Single, boxHeight as
Single, FontMax as Integer, FontMin as Integer) as String
Dim i as Integer
For i = FontMax to FontMin Step -1
If IsTextSmaller(Text, i, boxWidth, boxHeight) Then
Exit For
End If
Next
return i & "pt"
End Function
Private Function IsTextSmaller(Text as String, fontValue as Integer, boxWidth as Single, boxHeight as Single) as Boolean
Dim stringFont As New System.Drawing.Font("Arial", fontValue)
Dim stringSize As New System.Drawing.SizeF
Dim boxSize as New System.Drawing.SizeF(boxWidth * cmToPx, boxHeight * cmToPx * 10) 'we set box height bigger than textbox that we check
Dim bitmap as System.Drawing.Bitmap = New System.Drawing.Bitmap(1, 1)
Dim g As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(bitmap)
g.PageUnit = System.Drawing.GraphicsUnit.Pixel
stringSize = g.MeasureString(Text, stringFont, boxSize)
bitmap = Nothing
return stringSize.Height < (boxHeight * cmToPx)
End Function
選択TextBoxコントロールを以下のコードを追加します。
= Code.SetMaxFont(TextBox.Value, WidthOfTextBox, HeightOfTextBox, MaxFontSize, MinFontSize)
幅とテキストボックスの高さがなければなりませんセンチメートル単位で入力してください。テキストボックスのCanGrowプロパティとCanShrinkプロパティはFalseに設定する必要があります。