PDA

View Full Version : سوال: کار با شمارنده ها



r4hgozar
دوشنبه 01 آبان 1391, 23:12 عصر
سلام دوستان. من کتاب اقای هاشمی رو می خوانم. تو فصل 5 یه این مصال بر خوردم و منظور از این مثال رو نفهمیدم. می خواستم اگه می تونین با مثال ساده تر کمکم کنید.
اگه کسی از دوستان جزو بهتری داره لطفا اینجا بزاره تا من استفاده کنم.
این مثال تو pdf اقای هاشمیان نوشته بود کار با شمارنده ها:
public partial class Form1 : Form
{
private enum DayAction
{
GettingReadyForWork = 0,
TravelingToWork,
AtWork,
AtLunch,
TravelingFromWork,
RelaxingForFriends,
GettingReadyForBed,
Asleep
};

// Declare variable
private DayAction CurrentState;
private void Form1_Load(object sender, EventArgs e)
{
// Set the hour property to the current hour
this.Hour = DateTime.Now.Hour;
}

private void dtpHour_ValueChanged(object sender,EventArgs
e)
{
// Update the hour property
this.Hour = dtpHour.Value.Hour;
}// Hour property
private int Hour
{
get
{
// Return the current hour displayed
return dtpHour.Value.Hour;
}
set
{
// Set the date using the hour
// passed to this property
dtpHour.Value = new DateTime(
DateTime.Now.Year, DateTime.Now.Month,
DateTime.Now.Day, value, 0, 0);
// Set the display text
lblState.Text = "At " + value + ":00 Matt is ";
}
}
set
{
// Set the date using the hour passed to this property
dtpHour.Value = new DateTime(DateTime.Now.Year,
DateTime.Now.Month, DateTime.Now.Day, value, 0, 0);
// Determine the state
if (value >= 6 && value < 7)
CurrentState = DayAction.GettingReadyForWork;
else if (value > 7 && value < 8)
CurrentState = DayAction.TravelingToWork;
else if (value >= 8 && value < 13)
CurrentState = DayAction.AtWork;
else if (value >= 13 && value < 14)
CurrentState = DayAction.AtLunch;
else if (value >= 14 && value < 17)
CurrentState = DayAction.AtWork;
else if (value >= 17 && value < 18)
CurrentState = DayAction.TravelingFromWork;
else if (value >= 18 && value < 22)

hakim22
سه شنبه 02 آبان 1391, 19:43 عصر
ما هم نفهمیدیم شما سوالت چیه !؟

کاربر مبتدی
یک شنبه 24 دی 1391, 09:06 صبح
اتفاقاً من هم همین مشکل رو دارم چون مو به مو توضیحات کتاب رو پیش رفتم و برنامه کار نکرد. سوال خوبی بود

saied_hacker
یک شنبه 24 دی 1391, 09:32 صبح
اول از همه سعی کن کدتو بزاری تو این تگ های کد تا هم زیباتر بشه هم قابل فهم
public partial class Form1 : Form
{
private enum DayAction
{
GettingReadyForWork = 0,
TravelingToWork,
AtWork,
AtLunch,
TravelingFromWork,
RelaxingForFriends,
GettingReadyForBed,
Asleep
};

// Declare variable
private DayAction CurrentState;
private void Form1_Load(object sender, EventArgs e)
{
// Set the hour property to the current hour
this.Hour = DateTime.Now.Hour;
}

private void dtpHour_ValueChanged(object sender,EventArgs
e)
{
// Update the hour property
this.Hour = dtpHour.Value.Hour;
}// Hour property
private int Hour
{
get
{
// Return the current hour displayed
return dtpHour.Value.Hour;
}
set
{
// Set the date using the hour
// passed to this property
dtpHour.Value = new DateTime(
DateTime.Now.Year, DateTime.Now.Month,
DateTime.Now.Day, value, 0, 0);
// Set the display text
lblState.Text = "At " + value + ":00 Matt is ";
}
}
set
{
// Set the date using the hour passed to this property
dtpHour.Value = new DateTime(DateTime.Now.Year,
DateTime.Now.Month, DateTime.Now.Day, value, 0, 0);
// Determine the state
if (value >= 6 && value < 7)
CurrentState = DayAction.GettingReadyForWork;
else if (value > 7 && value < 8)
CurrentState = DayAction.TravelingToWork;
else if (value >= 8 && value < 13)
CurrentState = DayAction.AtWork;
else if (value >= 13 && value < 14)
CurrentState = DayAction.AtLunch;
else if (value >= 14 && value < 17)
CurrentState = DayAction.AtWork;
else if (value >= 17 && value < 18)
CurrentState = DayAction.TravelingFromWork;
else if (value >= 18 && value < 22)


خوب سادس شما اومدین یه شمارنده (enum) تعریف کردین به نام DayAction
private enum DayAction
{
GettingReadyForWork = 0,
TravelingToWork,
AtWork,
AtLunch,
TravelingFromWork,
RelaxingForFriends,
GettingReadyForBed,
Asleep
};
که حالتهای مختلفی رو شامل میشه و مقدار پیش فرضشون از 0 هست تا 7

توی این بخش هم میاد با توجه به ساعت dtpHour مقدار CurrentState که حالا برفرض حالت یا موقیت فرد رو تعیین می کنه ( سر کاره یا خوابه...) رو تنظیم میکنه
if (value >= 6 && value < 7)
CurrentState = DayAction.GettingReadyForWork;
else if (value > 7 && value < 8)
CurrentState = DayAction.TravelingToWork;
else if (value >= 8 && value < 13)
CurrentState = DayAction.AtWork;
else if (value >= 13 && value < 14)
CurrentState = DayAction.AtLunch;
else if (value >= 14 && value < 17)
CurrentState = DayAction.AtWork;
else if (value >= 17 && value < 18)
CurrentState = DayAction.TravelingFromWork;
else if (value >= 18 && value < 22)

مثلا اگر الان ساعت 6 تا 7 بود داره اماده میشه بره سر کار (DayAction.GettingReadyForWork) و....
یا اگر ساعت 14 تا 17 بود طرف سر کار هست (DayAction.AtWork;)

کاربر مبتدی
سه شنبه 26 دی 1391, 09:18 صبح
بالاخره تونستم راه بندازمش البته با 2012
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace enumdemo
{


public partial class Form1 : Form
{
//تعریف شمارنده
private enum DayAction
{
GettingReadyForWork = 0,//0
TravelingToWork,//1
AtWork,//2
AtLunch,//3
TravelingFromWork,//4
RelaxingForFriends,//5
GettingReadyForBed,//6
Asleep//7
};
// Declare variable
private DayAction CurrentState;
private int Hour//تعریف خاصیت جدید
{
get//بدست آوردن مقدار خاصیت
{
// Return the current hour displayed
return dtpHour.Value.Hour;
}
set
{
// Set the date using the hour
// passed to this property
dtpHour.Value = new DateTime(DateTime.Now.Year,DateTime.Now.Month, DateTime.Now.Day, value, 0, 0);

if (value >= 6 && value < 7)
CurrentState = DayAction.GettingReadyForWork;
else if (value > 7 && value < 8)
CurrentState = DayAction.TravelingToWork;
else if (value >= 8 && value < 13)
CurrentState = DayAction.AtWork;
else if (value >= 13 && value < 14)
CurrentState = DayAction.AtLunch;
else if (value >= 14 && value < 17)
CurrentState = DayAction.AtWork;
else if (value >= 17 && value < 18)
CurrentState = DayAction.TravelingFromWork;
else if (value >= 18 && value < 22)
CurrentState = DayAction.RelaxingForFriends;
else if (value >= 22 && value < 23)
CurrentState = DayAction.GettingReadyForWork;
else if (value >= 23 && value < 24)
CurrentState = DayAction.Asleep;
// CurrentStateتبدیل به رشته میشود و نباید به تنهایی بکار رود
lblState.Text = "At " + value + ":00 Matt is " + CurrentState;
}
}
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.Hour = DateTime.Now.Hour;
}

private void dtpHour_ValueChanged(object sender, EventArgs e)
{
// بروز کردن خاصیت
this.Hour = dtpHour.Value.Hour;
}
}
}