我正在使用Visual Studio 2008,我需要能够使用表达式调整字体大小。 到目前为止,我有,
IIf((Len(First(Fields!CardID.Value, "data"))> 30), "12 pt", "72 pt")
我知道我必须引用LEN变量来获得总字符大小,但我不确定如何。
任何建议都将受到赞赏。
提前致谢
答案 0 :(得分:2)
对于Winforms,下面给出了一个示例。它有点麻烦,但效果很好。对于此示例,有一个带有按钮Button1
,文本框TextBox1
和标签Label1
的表单。单击Button1
后,TextBox1
中的文字将适合Label1
的可用空间。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If TextBox1.Text = "" Then
Exit Sub
End If
Dim fnt As New Font("Tahoma", 1, FontStyle.Regular)
Dim g As Graphics = Me.CreateGraphics
Dim i As Int32 = 0
Dim boxWidth As Integer = Label1.Width
Dim textWidth As Double = 0
Dim someSmallAmountToAccountForLabelPadding As Int16 = 5
Do While textWidth < boxWidth - someSmallAmountToAccountForLabelPadding
i += 1
fnt = New Font("Tahoma", i, FontStyle.Regular)
textWidth = g.MeasureString(TextBox1.Text, fnt).Width
Loop
Label1.Text = TextBox1.Text
Label1.Font = fnt
g.Dispose()
End Sub
对于WPF,您甚至不需要任何代码,只需要一个Viewbox。下面显示的XAML有一个带有TextBox tbx1
的窗口和一个TextBlock。无论您在tbx1
中输入什么内容,都会自动适应TextBlock,然后Viewbox会向上或向下缩放以适应它所在的可用空间。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBox Margin="20,8" Name="tbx1"/>
<Viewbox Grid.Row="1" Stretch="Fill">
<TextBlock Text="{Binding ElementName=tbx1, Path=Text}" />
</Viewbox>
</Grid>
您可以尝试使用Viewbox的Stretch属性来实现不同的效果。