文本框显示为空 WPF
Textbox showing as null WPF
我有 3 个文本框,用户可以修改它们以更改 window 的某些颜色的 RGB 颜色。为了给他们一个可视化效果,我正在做的是在所述文本框旁边有一个框,显示他们使用文本框中的所述 RGB 值制作的颜色。为此,我将所有 3 个文本框的 TextChanged 事件设置为一种方法,该方法从 3 个文本框获取文本,使用 TryParse 将它们转换为整数,将数字分配给画笔,然后将画笔分配给框,以便用户可以看到它。 XAML 看起来像这样:
<TextBox Name="ColorPickerDisplayRed" Background="Transparent"
BorderBrush="Transparent"
FontFamily="Moon 2.0"
Foreground="#6BAAFF"
Text="255"
TextAlignment="Center"
Margin="0, -1.2, 0, 0"
TextChanged="UpdateColorPickerDisplay"/>
我为绿色和蓝色复制并粘贴了这个,所以除了文本框的名称外,其他一切都是一样的。然后,为了得到整数值,我有这个:
private void UpdateColorPickerDisplay(object sender, TextChangedEventArgs e)
{
int R;
int G;
int B;
if (int.TryParse(ColorPickerDisplayRed.Text, out R)) ;
if (int.TryParse(ColorPickerDisplayGreen.Text, out G)) ;
if (int.TryParse(ColorPickerDisplayBlue.Text, out B)) ;
var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
ColorPickerDisplay.Background = brush;
}
但是当我 运行 它时,我收到一条错误消息“ColorPickerDisplayGreen 为空。”。然后我尝试将每个框的文本设置为测试并得到相同的错误。我对所有 3 个文本框都进行了尝试,但只对红色有效。是因为我从所有 3 个文本框调用相同的方法吗?
解决了,不知道TextChanged被立即调用了。
添加 ?在访问文本之前 属性 & 它会解决问题
int R;
int G;
int B;
if (int.TryParse(ColorPickerDisplayRed?.Text, out R)) ;
if (int.TryParse(ColorPickerDisplayGreen1?.Text, out G)) ;
if (int.TryParse(ColorPickerDisplayBlue?.Text, out B)) ;
var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
ColorPickerDisplayRed.Background = brush;
我有 3 个文本框,用户可以修改它们以更改 window 的某些颜色的 RGB 颜色。为了给他们一个可视化效果,我正在做的是在所述文本框旁边有一个框,显示他们使用文本框中的所述 RGB 值制作的颜色。为此,我将所有 3 个文本框的 TextChanged 事件设置为一种方法,该方法从 3 个文本框获取文本,使用 TryParse 将它们转换为整数,将数字分配给画笔,然后将画笔分配给框,以便用户可以看到它。 XAML 看起来像这样:
<TextBox Name="ColorPickerDisplayRed" Background="Transparent"
BorderBrush="Transparent"
FontFamily="Moon 2.0"
Foreground="#6BAAFF"
Text="255"
TextAlignment="Center"
Margin="0, -1.2, 0, 0"
TextChanged="UpdateColorPickerDisplay"/>
我为绿色和蓝色复制并粘贴了这个,所以除了文本框的名称外,其他一切都是一样的。然后,为了得到整数值,我有这个:
private void UpdateColorPickerDisplay(object sender, TextChangedEventArgs e)
{
int R;
int G;
int B;
if (int.TryParse(ColorPickerDisplayRed.Text, out R)) ;
if (int.TryParse(ColorPickerDisplayGreen.Text, out G)) ;
if (int.TryParse(ColorPickerDisplayBlue.Text, out B)) ;
var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
ColorPickerDisplay.Background = brush;
}
但是当我 运行 它时,我收到一条错误消息“ColorPickerDisplayGreen 为空。”。然后我尝试将每个框的文本设置为测试并得到相同的错误。我对所有 3 个文本框都进行了尝试,但只对红色有效。是因为我从所有 3 个文本框调用相同的方法吗?
解决了,不知道TextChanged被立即调用了。
添加 ?在访问文本之前 属性 & 它会解决问题
int R;
int G;
int B;
if (int.TryParse(ColorPickerDisplayRed?.Text, out R)) ;
if (int.TryParse(ColorPickerDisplayGreen1?.Text, out G)) ;
if (int.TryParse(ColorPickerDisplayBlue?.Text, out B)) ;
var brush = new SolidColorBrush(Color.FromArgb(255, (byte)R, (byte)G, (byte)B));
ColorPickerDisplayRed.Background = brush;