نمایش نتایج 1 تا 11 از 11

نام تاپیک: تغییر Application.CurrentCulture.Calendar

  1. #1

    Smile تغییر Application.CurrentCulture.Calendar

    آیا امکان ست کردن کلاس PersianCalendar به خصوصیت Application.CurrentCulture.Calendar وجود دارد.

    این خصوصیت در یک برنامه ویندوزی در .NET وجود دارد

    در منطق این عمل امکان پذیر است زیرا کلاس PersianCalendar از نوع Calendar است.

    دوستان راهنمایی کنند آیا با توابع API امکان پذیر است یا نه

    هدف از این کار شمسی کردن کنترل های تاریخ ویندوز می باشد
    آخرین ویرایش به وسیله arefsoft : چهارشنبه 15 خرداد 1387 در 12:20 عصر

  2. #2

    نقل قول: تغییر Application.CurrentCulture.Calendar

    سوال رو متوجه نشدم سوال رو واضح بیان کنید یا دقیقا کاری که میخواهین انجام بدین رو توضیح بدین

  3. #3

    نقل قول: تغییر Application.CurrentCulture.Calendar

    نقل قول نوشته شده توسط rostamkhani مشاهده تاپیک
    سوال رو متوجه نشدم سوال رو واضح بیان کنید یا دقیقا کاری که میخواهین انجام بدین رو توضیح بدین

    حالا دوباره بخوانید.

  4. #4
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: تغییر Application.CurrentCulture.Calendar

    اون کار رو مستقیما نمی تونید انجام بدید، چون PersianCalendar جزو لیست تقویم های مجاز دات نت نیست. اما با استفاده از متد ActivatePersianCalendar در کلاس زیر می توانید تقویم شمسی را به تنظیمات Localization تزریق کنید. نتیجه همان چیزی خواهد بود که شما انتظار دارید.

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace PersianUtils
    {
    public class CalendarUtils
    {
    public static void ActivatePersianCalendar()
    {
    System.Globalization.CultureInfo calture = new System.Globalization.CultureInfo("fa-IR");
    System.Globalization.DateTimeFormatInfo info = calture.DateTimeFormat;
    info.AbbreviatedDayNames = new string[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
    info.DayNames = new string[] { "یکشنبه", "دوشنبه", "ﺳﻪشنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
    info.AbbreviatedMonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    info.MonthNames = new string[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
    info.AMDesignator = "ق.ظ";
    info.PMDesignator = "ب.ظ";
    info.ShortDatePattern = "dd/MM/yyyy";
    info.LongDatePattern = "dd/MM/yyyy";


    info.FirstDayOfWeek = DayOfWeek.Saturday;
    System.Globalization.PersianCalendar cal = new System.Globalization.PersianCalendar();
    typeof(System.Globalization.DateTimeFormatInfo).Ge tField("calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (info, cal);
    object obj = typeof(System.Globalization.DateTimeFormatInfo).Ge tField("m_cultureTableRecord", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (info);
    obj.GetType().GetMethod("UseCurrentCalendar", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).Invoke(ob j, new object[] { cal.GetType().GetProperty("ID", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue (cal, null) });
    typeof(System.Globalization.CultureInfo).GetField( "calendar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue (calture, cal);
    System.Threading.Thread.CurrentThread.CurrentCultu re = calture;
    System.Threading.Thread.CurrentThread.CurrentUICul ture = calture;
    System.Globalization.CultureInfo.CurrentCulture.Da teTimeFormat = info;
    System.Globalization.CultureInfo.CurrentUICulture. DateTimeFormat = info;
    }
    }
    }


  5. #5
    کاربر دائمی آواتار ali_kolahdoozan
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اون سر دنیا
    پست
    1,631

    نقل قول: تغییر Application.CurrentCulture.Calendar

    جالب بود . اما كاش ميشد ابزارهاي كار با تاريخ خود دات نت رو عوضشون كرد . با اين سورس دوست سوال كننده به هدفش نخواهد رسيد . فقط رفتار سيستم نسبت به تاريخ شمسي شد . اما باز هم كنترلها به شمسي كاري ندارن
    در ضمن datepicker خود دات نت همچين چيز جالبي نيست خودتان ميتوانيد يكي خيلي بهتر بنويسيد
    آخرین ویرایش به وسیله ali_kolahdoozan : چهارشنبه 15 خرداد 1387 در 16:29 عصر

  6. #6
    کاربر دائمی آواتار ali_kolahdoozan
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اون سر دنیا
    پست
    1,631

    نقل قول: تغییر Application.CurrentCulture.Calendar

    كرامتي جان يك عيب اين كد داره . وقتي بخشي از تاريخ رو بخواهيم باز ميلادي ميده مثلا datetime.now.year اينجاست كه باز ميدهد 2008 . ببين حل ميشه . خيلي مرسي

  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379

    نقل قول: تغییر Application.CurrentCulture.Calendar

    این کد رو باید هر دفعه تو Form_Load فراخوانی کنی. اونوقت درست میشه.

    همچنین یکی از کاربران این سایت بنام هادی اسکندری مجموعه ای برای کنترل های تاریخ شمسی در Code Project منتشر کرده بود و اینجا لینکش رو گذاشته بود. میتونید برای انتخابگر تاریخ از اون استفاده کنید که خیلی هم کامله.

  8. #8
    کاربر دائمی آواتار ali_kolahdoozan
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    اون سر دنیا
    پست
    1,631

    نقل قول: تغییر Application.CurrentCulture.Calendar

    من فقط از سر كنج كاوي خواستم . مگر نه براي كار با تاريخ ابزارهام كامله ممنون. در مورد سورس با وجود توي متد سازنده فرم بودن باز هم وضع همينه كه گفتم

  9. #9

    نقل قول: تغییر Application.CurrentCulture.Calendar

    سلام دوست عزیز ،
    همچنین یکی از کاربران این سایت بنام هادی اسکندری مجموعه ای برای کنترل های تاریخ شمسی در Code Project منتشر کرده بود و اینجا لینکش رو گذاشته بود. میتونید برای انتخابگر تاریخ از اون استفاده کنید که خیلی هم کامله.
    http://www.codeproject.com/KB/select...siLibrary.aspx
    I've just started tweeting!
    @Alireza_Maddah

  10. #10

    نقل قول: تغییر Application.CurrentCulture.Calendar

    نقل قول نوشته شده توسط DelphiAssistant مشاهده تاپیک
    این کد رو باید هر دفعه تو Form_Load فراخوانی کنی. اونوقت درست میشه.


    سلام آقای کرامتی

    این کد را form_load گذاشتم اما نفهمیدم چه چیز درست می شود. منظورم این است که دقیقا نمی دانم با این تزریق تقویم چه چیزی بدست می آید. ممکن است توضیح دهید؟ (چون من در زمینه کار با ابزار های تاریخ سابقه کمی دارم و ابزاریهای .net را کامل نمی شناسم.)

    با تشکر
    محمد حامد

  11. #11

    نقل قول: تغییر Application.CurrentCulture.Calendar

    سلام
    در ASP.NET با override کردن متد رندر میشه کنترل Calendar رو شمسی کرد آیا راهی وجو داره که DatetimePicker رو هم اینجوری شمسی کرد
    با تشکر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •