我正在尝试使用WinForms之间的事件在C#中编写代码。我想使用RadioButton(RadioButton在2.表单上)更改1.表单和2.表单的RichTextBox中的颜色文本,但是当我声明变量:Color valgtFarge = null;
时,我收到以下错误消息: Cannot convert null to 'System.Drawing.Color' because it is a non-nullable value type
。我究竟做错了什么?
功能:
private void rtf2_TextChanged(object sender, EventArgs e)
{
Color colorChoice = null;
if (rbtnBlack.Checked)
colorChoice = Color.Black;
//same here for the others RadioButtons
if (myEventHandler != null && rtf2.Text.Length != 0)
{
myEventHandler(this, new Form1EventArgs(rtf2.Text.Substring(rtf2.Text.Length - 1),
colorChoice));
}
}
答案 0 :(得分:4)
Color
是一个结构,而不是一个类。结构不能是null
。如果您想要一个可为空的结构,则可以使用Nullable<Color>
(或其简写语法Color?
)代替您的类型。
阅读材料:Classes and Structs
答案 1 :(得分:3)
好吧,因为Color
是struct
,而结构不能 null 。您可以使用Nullable<T>
使其可以为空:
Nullable<Color> colorChoice = null;
// or shorter
Color? colorChoice = null;
然后要获取Nullable
对象的值,请使用Value
属性或GetValueOrDefault
方法(如果您不知道是否&#39},您应该更喜欢这个; s null 。因为如果Value
null ,{{1}}会抛出异常。\ n \ n进一步参考:
答案 2 :(得分:1)
您也可以使用类似于null但更安全的Color.Empty;
。
Color color = Color.Empty;
答案 3 :(得分:0)
您可以使用问号将其定义为可空:
Color? color = null;