首页 > 解决方案 > 我想让应用程序启动时剪贴板有数字时按钮可见(xamarin)

问题描述

当我调用此方法时,剪贴板值为空

    ****here is the method ****
           async void clip()
        {
            var phoneNum = await Clipboard.GetTextAsync();
            if (Clipboard.HasText)
            {

                //btnSaudi.Text = phoneNume;
                Regex reg = new Regex(@"^\d+$");

                if (reg.IsMatch(phoneNum))
                    btnSaudi.IsVisible = true;

            }
        }

但是当我在按钮单击事件中使用相同的代码时它可以工作

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="DirectM.MainPage"
             Title="DirectN">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="setting" Clicked = "ToolbarItem_Clicked" Order="Secondary" />
    </ContentPage.ToolbarItems>
    

    <StackLayout >
        <StackLayout Padding="20,50,20,10" >
            <Entry x:Name="txtPhone" Keyboard="Telephone" Placeholder="numbe" />
        </StackLayout>

        <StackLayout Padding="50,50,50,100" >
            <Button x:Name="btnSaudi" Text="ENTER" Clicked="btnSaudi_Clicked" Padding="5,5,5,5" FontSize="Large" />
        </StackLayout>
        
    </StackLayout>

</ContentPage>

这是页面的 xaml 代码

标签: c#androidxamarin

解决方案


您可以覆盖onAppearing()方法。在页面可见之前调用此方法。代码如下:

protected override void OnAppearing()
        {
            base.OnAppearing();
            clip();
        }
        async void clip()
        {

            var phoneNum =await Clipboard.GetTextAsync();
            if (Clipboard.HasText)
            {
                Regex regex = new Regex(@"^\d+$");
                Console.WriteLine(phoneNum);
             
                if (regex.IsMatch(phoneNum))
                {
                    Console.WriteLine("match");
                    btnSaudi.IsVisible = true;
                }
            }
        }

截图:

在此处输入图像描述


推荐阅读