c # отображать текст в метке за определенное время

#c# #winforms #timer

#c# #winforms #таймер

Вопрос:

Кто-нибудь знает, как отобразить текст за определенное время в метке или в текстовом поле? Предположим, если я нажму кнопку, она покажет текст, введенный в текстовое поле в метке, в течение 15 секунд, а затем он должен исчезнуть.

Ответ №1:

Класс таймера.

Пример кода

 using System;
//Включаем необходимое пространство имен.
using System.Timers;
public class MyTimer
{
    static int n=0; //Счетчик.
    public static void Main()
    {
        System.Timers.Timer tmr = new System.Timers.Timer();
        tmr.Elapsed =new ElapsedEventHandler(OnTimedEvent);
        tmr.Interval=1000; //Устанавливаем интервал в 1 сек.
        tmr.Enabled=true; //Вкючаем таймер.
        while(n!=4); //Таймер тикает 4 раза.
    }
    //Метод для отработки события Elapsed таймера.
    public static void OnTimedEvent(object source, ElapsedEventArgs e)
    {
        //Делаем некоторые действия.
        Console.WriteLine("Hello World!");
        //Увеличиваем счетчик.
        n  ;
    }
}
  

Ссылка

Ответ №2:

Вы можете использовать таймер. Вы не говорите, WinForms это или WPF, поэтому я предполагаю, что WPF, но вы также можете использовать System.Windows.Timers.Timer .

 using System.Windows.Threading;

class MyWindow : Window
{
    public MyWindow()
    {
        _someLabel.Text = "Whatever";
        var timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds( 15 );
        timer.Tick  = delegate { _someLabel.Text = String.Empty; };
    }
}
  

Ответ №3:

Используйте Timer , доступный в System.Timers

Время выполнения

Класс Timer представляет собой элемент управления таймером и используется для создания таймера во время выполнения. Следующий фрагмент кода создает таймер во время выполнения, устанавливает его свойство и обработчик событий.

 Timer t = new Timer();

t.Interval = 2000;

timer1.Enabled = true;

timer1.Tick  = new System.EventHandler(OnTimerEvent);
  

Код обработчика событий выглядит следующим образом.

 private void OnTimerEvent(object sender, EventArgs e)

{

    lbl.Text = DateTime.Now.ToLongTimeString()   ","   DateTime.Now.ToLongDateString();

}
  

Вот демонстрация: Руководство по таймеру C #

Ответ №4:

Предполагается, что веб-страница:

Вы можете сделать это через javascript , вы не хотите делать это на C #, поскольку это обрабатывается на стороне сервера.

Предполагается, что приложение Windows:

Вы могли бы использовать timer для удаления метки через несколько секунд.

Попробуйте указать, над каким типом приложения вы работаете, в вопросе, поскольку это упрощает предоставление краткого ответа.

Ответ №5:

Я собираюсь сделать дикое предположение, как и все остальные … если это решение в данный момент бесполезно, то оно может быть полезно для других, ищущих по этой теме.

Если вы используете WPF, это тривиально, проверьте этот полный пример, в котором текстовое поле исчезает в течение 5 секунд, как только оно теряет фокус. Второе текстовое поле существует просто для того, чтобы вам было на чем сфокусироваться 🙂

 <Window x:Class="WpfApplication12.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="150" Width="150">


    <Window.Resources>
        <Style x:Key="Fade" TargetType="TextBox">
            <Style.Triggers>
                <EventTrigger RoutedEvent="TextBox.LostFocus" >
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation    x:Name="z" 
                                                    BeginTime="0:0:0" 
                                                    Duration="0:0:5" 
                                                    From="1.0" 
                                                    To="0" 
                                                    Storyboard.TargetProperty="Opacity" 
                                                    />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <Grid>
        <StackPanel Orientation="Vertical">
            <TextBox x:Name="MyTextBox" Width="100" Height="30" Style="{StaticResource Fade}" />
            <TextBox Width="100" Height="30" Margin="0,5"/>
        </StackPanel>
    </Grid>
</Window>
  

Ответ №6:

вы можете использовать класс timer.

Показывает текст, а истекшее событие таймера скрывает текст. Проверьте ссылку

Ответ №7:

Используйте компонент Timer, который позволяет вам указать повторяющийся интервал, через который в вашем приложении вызывается Elapsed событие. Затем вы можете обработать это событие, чтобы обеспечить регулярную обработку.

Таймер.Свойство Interval используется для установки интервала, через который следует вызывать прошедшее событие.

Если для Включено установлено значение true, а для автоматического набора — значение false, то событие Timer вызывает Elapsed событие только один раз, при первом истечении интервала.

Timer Компонент вызывает событие, прошедшее, на основе значения свойства Interval. Вы можете обработать это событие, чтобы выполнить необходимую вам обработку.

Используйте таймер.Запустите метод, чтобы начать вызывать Elapsed событие, установив Enabled значение true.

Используйте таймер.Метод Stop, чтобы прекратить инициирование Elapsed события, установите Enabled значение false.


Обратитесь к следующему образцу.