C# 尝试显示错误消息时应用程序崩溃

C# 尝试显示错误消息时应用程序崩溃,c#,xaml,xamarin,xamarin.forms,xamarin.ios,C#,Xaml,Xamarin,Xamarin.forms,Xamarin.ios,我的应用程序中有几个文本字段,当文本长度小于1时,我希望显示一条错误消息,因此基本上当文本字段中没有放置文本时。但当我测试这个时,应用程序崩溃了 下面是Xaml和C#(代码隐藏)中的代码 XAML: C#: 使用系统; 使用System.Collections.Generic; 使用Xamarin.Forms; 命名空间RoseySports { 公共分部类创建活动:ContentPage { 公共创建_活动() { 初始化组件(); 字符串[]位置={ “阿戈斯蒂内利足球场”, “网球场1

我的应用程序中有几个文本字段,当文本长度小于1时,我希望显示一条错误消息,因此基本上当文本字段中没有放置文本时。但当我测试这个时,应用程序崩溃了

下面是Xaml和C#(代码隐藏)中的代码

XAML:


C#:

使用系统;
使用System.Collections.Generic;
使用Xamarin.Forms;
命名空间RoseySports
{
公共分部类创建活动:ContentPage
{
公共创建_活动()
{
初始化组件();
字符串[]位置={
“阿戈斯蒂内利足球场”,
“网球场1(罗斯)”,
“网球场2(罗斯)”,
“网球场3(罗斯)”,
“网球场4(罗斯)”,
“网球场5(罗斯)”,
“网球场6(罗斯)”,
"罗西体育馆",,
“Gymasium(La Combe)”,
“健身室(Rosey)”,
“健身室(La Combe)”,
“柔道室(La Combe)”,
"罗西游泳池",,
“游泳池(La Combe)”,
“篮球场(罗斯)”,
“篮球场(La Combe)”,
“橄榄球场(罗斯)”
};
SetValue(DatePicker.MinimumDateProperty,DateTime.Now);
for(int i=0;i
最重要的一点是:

private async void Handle_Clicked_1(object sender, System.EventArgs e)
            {
                if (title.Text.Length < 1
                    && description.Text.Length < 1)
                {
                    await DisplayAlert("Error", "Make sure all fields are completed", "OK");

                } else {

                    await Navigation.PushModalAsync(new Invite_Page());

                }
私有异步无效句柄\u单击\u 1(对象发送方,System.EventArgs e)
{
如果(title.Text.Length<1
&&description.Text.Length<1)
{
等待DisplayAlert(“错误”,“确保所有字段都已完成”,“确定”);
}否则{
等待导航;
}
当我尝试将文本框留空时,会出现此错误:

已引发System.NullReferenceException

对象引用未设置为对象的实例

这是stacktrace:

“在RoseySports.Create_Activity+d__1.MoveNext()[0x0001d]in/Users/als moh/Desktop/School/Le Rosey/Class 1&T/SL/CS/IA/RoseySports/RoseySports/Create_Activity.xaml.CS:48\n--在System.Runtime.CompilerServices.AsyncMethodBuilderCore+c.b_6_0(System.Object状态)引发异常的前一位置的堆栈结束跟踪”[0x0000 ] in /库/ xAMARI.iOS.120.0.15/SRC/XAMARIN。IOS/MCS/类/参考文献/系统/运行/编译/服务/ AsiCyMultudio.Cs:NoSycCythCurraseCordExpSerk.Apple()[0x0000 ]中的1018 \n。在/Library/Frameworks/Xamarin.iOS.framework/Versions/12.0.0.15/src/Xamarin.iOS/Foundation/NSAction.cs:178\n--从引发异常的上一个位置开始的堆栈结束跟踪----\n在UIKit.UIApplication.UIApplication.UIApplicationMain(int,string[],intptr,intptr)\n在UIKit.UIKit.UIApplication.Main(System.string[]args,System.IntPtr principal,System.IntPtr delegate)[0x00005]在/Library/Frameworks/Xamarin.iOS.framework/Versions/12.0.0.15/src/Xamarin.iOS/UIKit/UIApplication.cs:79\n在UIKit.UIApplication.Main(System.String[]args,System.String principalClassName,System.String delegateClassName)[0x0002c]在/Library/Frameworks/Xamarin.iOS.framework/Versions/12.0.0.15/src/Xamarin.iOS/UIKit/UIApplication.cs:63\n位于RoseySports.iOS.Application.Main(System.String[]args)[0x00001]in/Users/als moh/Desktop/School/Le Rosey/Class 1&T/SL/cs/IA/RoseySports/iOS/Main.cs:17“


您应该对title.Text和description.Text执行null检查,因为如果条目控件的文本为空,则该值将为null。因此,当您尝试访问length属性时,应用程序会崩溃,因为它为null

if(string.IsNullOrEmpty(title.Text) || string.IsNullOrEmpty(description.Text))
{
   await DisplayAlert("Error", "Make sure all fields are completed", "OK");
}
我在if循环中编码了OR(| |)比较,因为如果任何字段为空,则应该抛出错误警报,因为您希望所有字段都需要完成

if (title.Text == null && description.Text == null)
        {
            await DisplayAlert("Error", "Make sure all fields are completed", "OK");

        }

因为Entry和Editor text属性是一个字符串,它们在为空时为null,length无法检查它是否为null。

有例外吗?请发布完整的stacktrace?可能是@SeM的重复项我认为这不适用于我的问题
标题。text
为null?或者只是空?@Greggz刚刚清空听到这个消息。如果这个答案有用,请投票!:)
if(string.IsNullOrEmpty(title.Text) || string.IsNullOrEmpty(description.Text))
{
   await DisplayAlert("Error", "Make sure all fields are completed", "OK");
}
if (title.Text == null && description.Text == null)
        {
            await DisplayAlert("Error", "Make sure all fields are completed", "OK");

        }