0

I Don't know what to use a timer or an if statements. how to trigger it? then let the other label show up?

namespace Labeltimer
{

public partial class MainPage : ContentPage
{

    public MainPage()
    {
        InitializeComponent();
        MyImage.Source = ImageSource.FromFile("logo.png");

    }

    void TButton_Clicked(object sender, System.EventArgs e)
    {

        T1Text.IsVisible = true;

        //T2Text.IsVisible = true;

    }

}
}
FreakyAli
  • 13,349
  • 3
  • 23
  • 63
  • Possible duplicate of [Timer in Xamarin.forms](https://stackoverflow.com/questions/37203371/timer-in-xamarin-forms) – Anas Alweish Oct 11 '19 at 01:20

4 Answers4

1

Inside your TButton_Clicked:

async void TButton_Clicked(object sender, System.EventArgs e)
{
    await Task.Delay(15000); // 15000ms == 15s
    T1Text.IsVisible = false;
}

I recommend you read more about asynchronous programming.

Dustin Catap
  • 411
  • 5
  • 11
0

There are many methods you can choose, for example:

1.System.Timers.Timer

private  void TButton_Clicked(object sender, EventArgs e)
    {
        System.Timers.Timer t = new System.Timers.Timer(15000);   // intial class Timer,set internal 15000ms;   
        t.Elapsed += new System.Timers.ElapsedEventHandler(doSometing2); //Execute events at time of arrival; 
        t.AutoReset = false;   //Set to execute (false) once and execute (true) all the time   
        t.Enabled = true;
    }

method doSometing2

private void doSometing2(object sender, ElapsedEventArgs e)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            mLabel.IsVisible = false;
        });
    }

2. Device.StartTimer

 private  void TButton_Clicked(object sender, EventArgs e)
    {
        Device.StartTimer(TimeSpan.FromSeconds(15), doSometing);
    }

method doSometing

private bool doSometing()
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            mLabel.IsVisible = false;
        });
        return true;
    }

3. Thread.Sleep

private  void TButton_Clicked(object sender, EventArgs e)
    {
        Thread.Sleep(15000);
        mLabel.IsVisible = false;
    }

4. Task.Delay

private async void TButton_Clicked(object sender, EventArgs e)
    {
        await Task.Delay(15000); // 15000ms == 15s
        mLabel.IsVisible = false;
    }
Jessie Zhang -MSFT
  • 9,830
  • 1
  • 7
  • 19
  • I wouldn't recommend using `Thread.Sleep` to be honest check this https://stackoverflow.com/questions/8815895/why-is-thread-sleep-so-harmful – FreakyAli Oct 11 '19 at 05:25
0

The way i do it,just add StartTimer inside that method,it will get call after 15 seconds:

 Device.StartTimer(TimeSpan.FromSeconds(15), () =>
        {
            T1Text.IsVisible = false;
            return false;
        });

return false if you want this to happen only once(like SetTimeout of JS),else return true(like SetInterval of JS) if you want it to happen every 15 seconds.

bhavya joshi
  • 1,096
  • 10
  • 20
0
public class StateToVisibilityConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, 
                System.Globalization.CultureInfo culture)
        {
            if (value is State)
            {
                State state = (State)value;
                switch (state)
                {
                    case State.Away:
                    case State.Gone:
                        return Visibility.Visible;
                    default:
                        return Visibility.Collapsed;
                }
            }
        }
        enter code here
        public object ConvertBack(object value, Type targetType, object parameter, 
                System.Globalization.CultureInfo culture)
        {
            return State.None; // your default state
        }
    }