مطالب
حرکت دادن و تغییر اندازه کنترل‌های فرم در زمان اجرا با استفاده از ماوس
برخی اوقات نیاز است در یک فرم ویندوزی، کنترل‌های آن‌را در حال اجرا با استفاده از ماوس جابجا کنیم و یا اندازه‌ی آن‌ها را تغییر بدیم.
در وب راهکار‌های مختلفی برای این کار ارائه شده، ولی این راه‌ها معمولا یا فقط برای تغییر مکان و یا فقط برای تغییر اندازه کنترل‌ها ارائه شده‌اند. من یکی از مقالات کد پروجکت را که به جابجا کردن کنترل‌ها پرداخته بود، توسعه دادم که امکان تغییر اندازه هم به آن اضافه شود. مقاله‌ی من (به زبان انگلیسی) در اینجا قرار دارد.
چون از کلاس و متد‌های استاتیک استفاده کردم، روش استفاده از این کلاس ساده بوده و افزودن قابلیت تغییر اندازه و جابجایی زمان اجرا با ماوس برای هر کنترل فقط با یک خط کد قابل انجام است:
ControlMoverOrResizer.Init(button1);
نحوه‌ی استفاده از کلاس:
برای فعال کردن قابلیت تغییر اندازه و جابجایی یک کنترل در حال اجرای برنامه با موس ما باید متد Init از کلاس MoveAndResizeControls  را فراخوانی کنیم و کنترل را به عنوان پارامتر به آن بفرستیم.
ControlMoverOrResizer.Init(button1);
اگر که ما بخواهیم به همراه تغییر کنترل ، خواص container آن را هم تغییر دهیم. باید کنترل container  را به عنوان پارامتر دوم به متد مذکور ارسال کنیم.
ControlMoverOrResizer.Init(button2,panel1);
برخی اوقات ممکن است که ما فقط بخواهیم که یا کنترل‌ها را جابجا کنیم و یا اندازه‌ی آنها را تغییر دهیم؛ در این مواقع ما باید خاصیت WorkType  کلاس MoveAndResizeControls را تغییر دهیم به یکی از مقادیر ذیل تغییر دهیم .
         internal enum MoveOrResize
        {
            Move,
            Resize,
            MoveAndResize
        }

مثالی از نحوه‌ی کار با کلاس :
using System;
using System.Windows.Forms;
using ControlManager;
namespace MoveAndResizeControls
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            ControlMoverOrResizer.Init(button1);
            ControlMoverOrResizer.Init(groupBox1);
            ControlMoverOrResizer.Init(textBox1);
            ControlMoverOrResizer.Init(button2,panel1);
            comboBox1.SelectedIndex = 0;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (comboBox1.SelectedIndex)
            {
                case 0:
                    ControlMoverOrResizer.WorkType=ControlMoverOrResizer.MoveOrResize.MoveAndResize;
                    break;
                case 1:
                    ControlMoverOrResizer.WorkType = ControlMoverOrResizer.MoveOrResize.Move;
                    break;
                case 2:
                    ControlMoverOrResizer.WorkType = ControlMoverOrResizer.MoveOrResize.Resize;
                    break;
            }
        }
    }
}

نکته :بعد از انجام تغییرات، جهت ذخیره وضعیت کنترل‌ها و بازیابی مجدد آنها می‌توان از متد‌های زیر استفاده کرد:
 GetSizeAndPositionOfControlsToString  , SetSizeAndPositionOfControlsFromString



شکل حالت اولیه:

شکل حالت نتیجه:


نظرات مطالب
کارهایی جهت بالابردن کارآیی Entity Framework #2
یک همچین کدهایی هم باعث ایجاد دوباره پلن مربوط به کوئری خواهند شد:
using (var context = new MyContext())
{
    var myObject = new NonMappedType();

    var query = from entity in context.MyEntities
                where entity.Name.StartsWith(myObject.MyProperty)
                select entity;
 
   var results = query.ToList();
    ...
}
معادل بهینه شده کد بالا:
using (var context = new MyContext())
{
    var myObject = new NonMappedType();
    var myValue = myObject.MyProperty;
    var query = from entity in context.MyEntities
                where entity.Name.StartsWith(myValue)
                select entity;

    var results = query.ToList();
    ...
}
در پروژه Decision خیلی از این نوع موارد پیاده سازی شده است که میبایست اصلاح شوند. برای مثال متد های GetPagedListAsync.
نظرات مطالب
روش های مختلف پردازش یک رشته و تبدیل آن به نوع داده تاریخ
یک نکته
اگر مثال زیر را برای تبدیل تاریخ شمسی 1393/02/31 یا 1393/04/31، به کمک متد DateTime.ParseExact اجرا کنید، با استثنایی متوقف خواهید شد:
var persianCulture = new CultureInfo("fa-IR");
var persianDateTime = DateTime.ParseExact("31/02/1393", "dd/MM/yyyy", persianCulture);
علت اینجا است که persianCulture.Calendar به GregorianCalendar تنظیم شده‌است (از ابتدا و به اشتباه) و قابل تغییر نیست (مگر با Reflection). راه حل جایگزین، چیزی شبیه به این خواهد بود:
   using System;
   using System.Globalization;
   using System.Linq;

    public static DateTime PersianDateToGregorianDate(string pDate)
    {
        var dateParts = pDate.Split(new[] { '/' }).Select(d => int.Parse(d)).ToArray();
        var hour = 0;
        var min = 0;
        var seconds = 0;
        return new DateTime(dateParts[0], dateParts[1], dateParts[2],
                            hour, min, seconds, new PersianCalendar());
    }
اشتراک‌ها
پادکست رادیو گیک

پادکست به انگلیسی Podcast، یا پادبخش مجموعه‌ای از پرونده‌های رسانه دیجیتال است که توزیع آن در اینترنت با استفاده از فید صورت گرفته و توسط کاربران معمولا بر روی یک پخش کننده موسیقی دیجیتال قابل پخش و دریافت است، این روش ارائه محتوا در سال ۲۰۰۴ میلادی محبوبیت و گسترش یافت البته قابل ذکر است...

پادکست رادیو گیک
نظرات مطالب
داستانی از Unicode
با تشکر از مطلب مفیدتون. میخوام متن «حسین test» را نمایش دهم و تمایل دارم متن «test» با فونت مخصوص انگلیسی چاپ شود و متن «حسین» مثلا با فونت بی یکان. این مورد با unicode-range امکان پذیر میباشد؟
نظرات مطالب
تبدیل زیرنویس‌های خاص پلورال‌سایت به فرمت SRT

سلام آقای نصیری

آیا شما عضو سایت پلورال سایت هستید؟ چقدر پرداخت کردید و این مبلغ را چطور با توجه به وضع ایران واریز کردید؟ آیا ارزش عضو شدن رو داره؟

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

با تشکر

نظرات مطالب
استثناهایی که باید حین استفاده از EF Code first بررسی شوند
من یک پیام خطا برای یکی از Propertyها تعیین کردم.وقتی می‌خوام به طریق زیر پیام رو دریافت کنم بازم همون خطای انگلیسی رو مشاهده می‌کنم!؟
 catch (DbEntityValidationException validationException)
                {
                    var errors = validationException.EntityValidationErrors.First();
                    foreach (var propertyError in errors.ValidationErrors)
                    {
                        Console.WriteLine(propertyError.PropertyName + "----" + propertyError.ErrorMessage);
                    }
                }
نظرات مطالب
نقدی بر کتاب «مرجع کامل entity framework 4.1»
آقای نصیری ضمن تشکر وقتی که مطلبی به زبان انگلیسی می خوانیم واژه هایی که مفهومش رو متوجه نمیشیم رو در دیکشنری بررسی می کنیم.

حالا به نظر شما نگهداری این واژه ها برای مرور های بعدی چگونه باشد ؟

---

پ ن 1 :  آخرین اشتراک‌ها و آخرین نظرها و  جستجو خیلی وقت ها بارگذاری نمی شوند.

پ ن 2:در حال حاضر هیچ راهی برای تهیه کتاب الگوهای طراحی شما هست  ؟
نظرات مطالب
افزونه تاریخ فارسی برای outlook 2007
در مورد قسمت sent ، یک سری الگوی تاریخ رو این برنامه تشخیص می‌ده. ممکنه تاریخ انگلیسی یا هر تاریخ ذکر شده دیگری در آن با الگوهای پیش فرض تطابق نداشته باشد. می‌تونید یک عکس یا حتی یک خروجی Html از این صفحه برای من ارسال کنید تا بررسی کنم (کلیک راست و مشاهده سورس ایمیل).
با تشکر
مطالب
تبدیل عدد صحیح به هگزا دسیمال و بلعکس
برای تبدیل یک عدد صحیح به هگزا دسیمال معادل و بلعکس از کد زیر استفاده می‌کنیم.

int intValue = 182;

string hexValue = intValue.ToString("X");

int intAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
کدهای بالا بقدر کافی روشن و واضح هستند که نیازی به توضیح اضافی نداشته باشند ولی فرض کنید قصد دارید عدد هگزا دسیمال 20 رقمی زیر را به معادل عدد صحیح آن تبدیل کنید، این عدد نیاز به 80 بیت دارد که امکان ذخیره سازی آن در int و یا long وجود ندارد چون طول آن‌ها بترتیب 32بیت و 64بیت است.
var hexValue = "0x00010471000001BF001F";
برای حل این مشکل ابتدا ارجاعی از System.Numerics رابه پروژه اضافه کنید سپس به یکی از 2 روش زیر آن را به عدد صحیح تبدیل کنید.

روش اول:
            byte[] bigNumber = new byte[]
            { 
                0, 0, 0, 1, 0, 4, 7, 1, 0, 0, 0, 0, 0, 1, 
                byte.Parse("B", System.Globalization.NumberStyles.HexNumber), 
                byte.Parse("F", System.Globalization.NumberStyles.HexNumber), 
                0, 0, 1, 
                byte.Parse("F", System.Globalization.NumberStyles.HexNumber) 
            };

            Array.Reverse(bigNumber);
            var bigInt = new System.Numerics.BigInteger(bigNumber);
در این روش ابتدا ارقام عدد هگزا دسیمال را در یک آرایه از نوع داده بایت ذخیره کنید سپس آرایه را معکوس کرده و آن را به متد BigInteger پاس دهید. علت معکوس کردن آرایه این است که متد سازنده BigInteger به آرایه little-endian نیاز دارد.

روش دوم:
var bigint =
                System.Numerics.BigInteger.Parse("00010471000001BF001F",
                System.Globalization.NumberStyles.HexNumber,
                System.Globalization.CultureInfo.InvariantCulture);
در این روش باید "0x" را از ابتدای عدد هگزا دسیمال جدا کنید و سپس آن را به BigInteger.Parse پاس دهید.

منابع:
  1. C# convert integer to hex and back again
  2. How do I convert this Hex to an Integer?