PDA

View Full Version : نمایش پیام در یک بازه زمانی



مهیار.
دوشنبه 10 آبان 1395, 20:41 عصر
باسلام میخواستم زمانی مثلا کاربر روی باتن کلیک میکنه یا مثلا داخل یه تکس باکس زمانی مقداری وارد میشه یک پیام بهش نشون بده و مثلا بعد از 5 ثانیه اون پیام محو بشه
ممنون ..

pouria76
دوشنبه 10 آبان 1395, 21:23 عصر
از یه تایمر و لیبل می تونی استفاده کنی.
به صورت زیر:

private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = "";
timer1.Enabled = false;
}


private void textBox1_TextChanged(object sender, EventArgs e)
{
label1.Text = "این یک پیغام برای تست است";
timer1.Enabled = true;
}

توجه:
1- مقدار اولیه لیبل باید بدون خالی باشد.
2- حالت اولیه تایمر باید غیرفعال باشد.

مهیار.
دوشنبه 10 آبان 1395, 23:09 عصر
[QUOTE=pouria76;2347419]از یه تایمر و لیبل می تونی استفاده کنی.
به صورت زیر:
private static System.Timers.Timer aTimer;

private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "متن اصلی";
}
private void button1_Click(object sender, EventArgs e)
{
label1.Text = "پیاممممم";
aTimer = new System.Timers.Timer(2000);
aTimer.Elapsed += OnTimedEvent;
aTimer.Interval = 2000;
aTimer.Enabled = true;
}


private void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
Chenge();
aTimer.Enabled = false;
}
void Chenge() { label1.Text = "متن اصلی";}

اینو امتحان کردم ولی وقتی میخواد برگرده به متن اصلی اروو میده ..
143260

pouria76
دوشنبه 10 آبان 1395, 23:48 عصر
شما نمی تونی از داخل thread به اجزای داخل فرم دسترسی مستقیم داشته باشید.
کدتون رو به این شکل تغییر بدید ببینید درست میشه.


public void CreateTimer()
{
var timer = new System.Timers.Timer(1000); // fire every 1 second
timer.Elapsed += HandleTimerElapsed;
}


public void HandleTimerElapsed(object sender, ElapsedEventArgs e)
{
// do whatever it is that you need to do on a timer
}

مهیار.
چهارشنبه 12 آبان 1395, 23:13 عصر
شما نمی تونی از داخل thread به اجزای داخل فرم دسترسی مستقیم داشته باشید.
کدتون رو به این شکل تغییر بدید ببینید درست میشه.


public void CreateTimer()
{
var timer = new System.Timers.Timer(1000); // fire every 1 second
timer.Elapsed += HandleTimerElapsed;
}


public void HandleTimerElapsed(object sender, ElapsedEventArgs e)
{
// do whatever it is that you need to do on a timer
}

اینم مثل همونی کدی که قبلا گذاشتید مشکل دسترسی thread که اجازه به اجرای یک thread دیگرو (یا همون که گفتید به اجزایی فرم ) رو نداره ..
آیا راهی هست بشه این مشکل رو حل کرد ..