تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 2 از 2

نام تاپيک: Visual C# 2005

  1. #1
    داره خودمونی میشه vahid662's Avatar
    تاريخ عضويت
    Dec 2006
    پست ها
    58

    پيش فرض Visual C# 2005

    با سلام
    یکی از دوستان تاپیکی مربوط به vb 2005 زده بودند من هم دیدم که جای C# 2005 خالیه
    خوب هرکه آموزشی یا سورس کدی و ... در مورد سی شارپ 2005 دارد اینجا بگذارد تا اینجا یه مرجع کامل برای#C بشود

  2. #2
    داره خودمونی میشه vahid662's Avatar
    تاريخ عضويت
    Dec 2006
    پست ها
    58

    پيش فرض حرکت دادن کنترل های روی فرم در زمان اجرا

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

    فرض کنید یک دکمه (button) روی فرم دارید که می خواید اونو در زمان اجرای برنامه - مثل زمان طراحی- به راحتی حرکت بدید. برای این کار بایستی از سه رویداد مربوط به موس برای دکمه کمک بگیرید. ابتدا سه متغیر در کلاس به صورت زیر تعریف کنید:

    int xposition ;

    int yPosition ;

    bool isDraged ;

    می دونید که چون این متغیر ها - و یا فیلد ها (چون به متغیر ها در کلاس فیلد و به توابع متد می گن) - در کلاس تعریف شدن، مقادیر اولیه اونها به این صورته:

    xPosition = yPosition = 0 ;

    isDraged = false ;

    حالا اگه به شکل زیر توجه کنید متوجه همه چیز خواهید شد:



    برای اینکه دکمه زا از حالت 1 به حالت 2 تغییر مکان بدید، باید اونو به اندازه پاره خط قرمز رنگ در راستای محور xها و به اندازه پاره خط آبی رنگ در راستای محور yها جایجا کنید. پس بایستی برای جابجا کردن دکمه در رویداد mouseMove مربوط به دکمه این دو مقدار - یعنی طول پاره خط های قرمز و آبی رنگ - رو به دست آورده، و به ترتیب با خواص left و top مربوط به دکمه جمع بزنید.

    برای محاسبه این مقادیر به این صورت عمل کنید: ابتدا در رویداد mouseDown محلی رو که دکمه کلیک شده بدست آورده، و مختصات x و y رو به ترتیب به متغیرهای xPosition و yPosition نسبت بدید. یعنی:
    private void btnMoveable_MouseDown ( object sender , MouseEventArgs e )

    {

    xPosition = e.X ;

    yPosition = e.Y ;

    isDraged = true ;

    this.Cursor = Cursors.SizeAll ;

    }

    دو خط اول این کد مختصات x و y کورسر را در متغیر های xPosition و yPosition ذخیره می کنن. کاربرد کد خط سوم را کمی بعد متوجه می شید. خط آخر هم که شکل کورسر را به شکل sizeAll درمی یاره، که در اعمال درگ کردن (Draging) معمولا اونو مشاهده می کنید.

    حالا در رویداد mouseMove کدهای زیر رو بنویسید:

    private void btnMoveable_MouseMove ( object sender , MouseEventArgs e )

    {

    if (isDraged)

    {

    btnMoveable.Left = btnMoveable.Left + e.X - xPosition ;

    btnMoveable.Top = btnMoveable.Top + e.Y - yPosition ;

    }

    }

    در کدهای بالا مقادیر e.X – xPosition و e.Y – yPosition به ترتیب طول پاره خط های قرمز رنگ و آبی رنگ هستن. حتما حدس زدید که از متغیر isDraged به چه منظوری استفاده شده. از این متغیر برای تشخیص فشار داده شدن کلید استفاده می شه. ما تنها زمانی مجاز به جرکت دادن دکمه هستیم که اونو در حالت فشار دادن نگه داشته باشیم. در رویداد mouseDown - که در بالا دیدید - مقدار متغیر isDraged را true کردیم، و در رویداد mouseMove چک کردیم که اگه متغیر true بود مختصات جدید دکمه را بدست بیاریم.

    آخرین عملی که باید انجام بدید اینه که مشخص کنید چه زمانی عمل انتقال تمام شده، برای این کار از رویداد mouseUp استفاده می کنیم:

    private void btnMoveable_MouseUp ( object sender , MouseEventArgs e )

    {

    ; isDraged = false

    ;this.Cursor = Cursors.Default

    }

    خط اول مقدار isDraged رو false می کنه تا نشون بده که کلبد فشار داده نشده. خط دوم هم برای اینه که شکل کورسر رو به حالت پیش فرض دربیاره.

    به نکات زیر توجه کنید:

    این روش برای تمامی آبجکت هایی که دارای سه رویداد فوق باشن قابل پیاده سازیه.
    همونطور که در اول مطلب توضیح داده شد به روش های مختلفی می شه این کار رو انجام داد، که این روش یکی از اونهاست.
    اگه خواستید کد رو کاملتر کنید بایستی اونو طوری تغییر بدید که محدوده حرکت دکمه رو هم کنترل کنه.

    منبع:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •