PDA

View Full Version : سوال: نحوه ی ساخت تقویم شمسی چگونه است؟



amir_hamze
جمعه 25 مرداد 1392, 14:37 عصر
سلام
خسته نباشید
میخوام ی تقویم ایرانی درست کنم مثل monthcalendar که اگر یکم هر ماه هر کدوم از روزهای هفته بود از همون روز شروع بشه و قبلش خالی بمونه
کدی که نوشتم اینه و میخوام ادامه همین کد باشه
ممنون میشم راهنماییم کنید
private void bs_Click(object sender, EventArgs e)
{
Button b = (Button)sender;
MessageBox.Show(b.Text);
}

private void button1_Click(object sender, EventArgs e)
{
System.Globalization.PersianCalendar persianC = new System.Globalization.PersianCalendar();
int emroz = persianC.GetDayOfMonth(DateTime.Now);

DateTime datenow = DateTime.Now;
DateTime temp = datenow.AddDays(-(emroz - 1));

int startday;
switch (temp.DayOfWeek)
{
case DayOfWeek.Monday:
startday = 0;
break;
case DayOfWeek.Saturday:
startday = 1;
break;
case DayOfWeek.Sunday:
startday = 2;
break;
case DayOfWeek.Thursday:
startday = 3;
break;
case DayOfWeek.Tuesday:
startday = 4;
break;
case DayOfWeek.Wednesday:
startday = 5;
break;
case DayOfWeek.Friday:
startday = 6;
break;
default:
break;

}

Button[] bs = new Button[42];
int[] arr = new int[42];
for (int i = 0; i < 42; i++)
{
bs[i] = new Button();

bs[i].Text = (i + 1).ToString();
arr[i] = i + 1;

Point p = new Point();
p.X = (i % 7) * 30;
p.Y = (i / 7) * 30;
bs[i].Location = p;

Size s = new Size(30,30);
bs[i].Size = s;

bs[i].Click+=bs_Click;

this.Controls.Add(bs[i]);
}
}
}

mousa1992
جمعه 25 مرداد 1392, 15:36 عصر
ینی میگی تا اینجاشو نوشتی بقیشو ما ادامه بدیم :لبخند:
توی الگوریتم کار راهنمایی خواستی من هستم
برای نمایش button هایی که در نظر گرفتی برا نمایش روز و ... میتونی توی flowlayoutpanel اضافشون کنی ؛ به این ترتیب دیگه نیازی به تنظیم مکان ها با استفاده از location نداری

ادامه بده کارت عالیه

موفق باشی

amir_hamze
جمعه 25 مرداد 1392, 15:46 عصر
داداش گلم بخدا ززیاد بلد نیستم
تا اینجاشم از چند رکورد کلاسی بچه ها یاد گرفتم
نمیدونم چطوری باید نشون بدم که اولین روز ماه سه شنبه ست!! :(

mousa1992
جمعه 25 مرداد 1392, 16:03 عصر
خب راهنماییت میکنم بقیه دوستان هم لطف کنید و همکاری کنید
شما روز و ماه و سال رو میدونید درسته ؟ خب میتونی با استفاده از تاریخی که در دست دارید متوجه بشی که چندمین روز از هفته هستید
با استفاده از خاصیت DayOfWeek از کلاس DateTime
خب این کدیه که من قبلا برا انجام این کار نوشتم

string GetDayOfWeek(DateTime Date)
{
switch (Date.DayOfWeek.ToString())
{
case "Saturday":
return "شنبه";
case "Sunday":
return "یک شنبه";
case "Monday":
return "دو شنبه";
case "Tuesday":
return "سه شنبه";
case "Wednesday":
return "چهار شنبه";
case "Thursday":
return "پنج شنبه";
case "Friday":
return "جمعه";
default:
return "";
}
}


109185109186109187109188109189

اینم چندتا عکس از کامپوننتی که طراحی کردم و میتونی ازش ایده بگیری

شما راه رو ادامه بده دوستان هستند و کمک میکنن
یا علی

amir_hamze
جمعه 25 مرداد 1392, 16:15 عصر
ممنون
اونی که میخام درست کنم عکس شماره 1 هستش
اون کدها رو تو کدوم قسمت برنامه ام وارد کنم؟
چطوری نشون میدی کهیکم اردیبهشت یکشنبه بوده

mousa1992
جمعه 25 مرداد 1392, 16:58 عصر
این چیزی که نوشتم ی متد هست که تاریخ رو به میلادی میگیره و بهت میگه که تو این تاریخ چندمین روز از هفته هستی


public DateTime shamsitomiladi(string datestr)
{
int year = int.Parse(datestr.Substring(0, 4));
int month = int.Parse(datestr.Substring(5, 2));
int day = int.Parse(datestr.Substring(8, 2));
DateTime date = pcalendar.ToDateTime(year, month, day, 0, 0, 0, 0);
return date;
}


تو این متد تاریخ شمسی رو به صورت رشته ازت میگیره و میلادی رو در قالب DateTime بهت برمیگردونه

یکم در مورد کلاس DateTime و PersianCalendar و مباحث مربوط به تاریخ مطالعه کن

موفق باشی

amir_hamze
جمعه 01 شهریور 1392, 09:10 صبح
چطور میتونم از flowlayoutpanel استفاده کنم در حالی که بتونم تعریف کنم چندتا سطر و ستون داشته باشه؟
تو فرم درست میشه اما تو flowlayoutpanel به اندازه خود کادرش کنار هم میچینه button ها رو

ab1000
یک شنبه 10 شهریور 1392, 22:39 عصر
دمت گرم داداش یه dll ی چیزی بزار حالشو ببریم!

ordebehesht
یک شنبه 10 شهریور 1392, 22:56 عصر
خوب این کامپ.ننت رو از کجا دانلود کنم