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

نام تاپیک: مشکل دستور if

  1. #1

    مشکل دستور if

    سلام، وقتی این دستور رو تایپ میکنم
    Imagelist1.images(0)
    =If picture box1.Image
    خطا میده و مینویسه که نباید بین دو تا image از =استفاده بشه.داخل Imagelist1 از قبل عکس گذاشتم

    مشکل چیه؟

  2. #2

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    سلام، وقتی این دستور رو تایپ میکنم
    Imagelist1.images(0)
    =If picture box1.Image
    خطا میده و مینویسه که نباید بین دو تا image از =استفاده بشه.داخل Imagelist1 از قبل عکس گذاشتم

    مشکل چیه؟
    انجمن مربوط به زبان مورد نظر رو باید انتخاب می کردید که احتمالا ویژوال بیسیک ئه.
    بجای = می توانید ارجاع (Reference) اش رو مقایسه کنید :

    If Object.ReferenceEquals(PictureBox1.Image, ImageList1.Images(0)) Then

    End If

    یا :

    If PictureBox1.Image Is ImageList1.Images(0) Then

    End If

  3. #3

    نقل قول: مشکل دستور if

    بله، ممنون از شما
    از is قبلا استفاده کردم، مشکل خطا برطرف میشه مثل object شما، ولی وقتی Start میکنی پروژه رو اصلا عملکرد نداره! هر چی کليک میکنی بی فایده است.

  4. #4

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    بله، ممنون از شما
    از is قبلا استفاده کردم، مشکل خطا برطرف میشه مثل object شما، ولی وقتی Start میکنی پروژه رو اصلا عملکرد نداره! هر چی کليک میکنی بی فایده است.
    کلیک روی چی؟ کدتون لابد عملکرد خاصی نداشته. صرفا یک if که نمیتونه باشه.

  5. #5

    نقل قول: مشکل دستور if

    کلیک روی picture box, در واقع میخوام وقتی عکس داخل picture box با عکسی که داخل Imagelist قرار دادم، برابر بود یا یکسان بود، یه سری دستورات اجرا کنه.

  6. #6

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    کلیک روی picture box, در واقع میخوام وقتی عکس داخل picture box با عکسی که داخل Imagelist قرار دادم، برابر بود یا یکسان بود، یه سری دستورات اجرا کنه.
    نمی توانید Image رو اینطوری مقایسه کنید، روال مقایسه ای که دارید می کنید برابر اساس مقایسه پیکسل های تصویر نیست، فقط مقایسه ارجاع انجام میشه.
    مقایسه Is و Object.ReferenceEquals بررسی می کنند که آیا دو تا طرف دقیقا یک شیء هستند یا نه، نه اینکه دو تا شیء متفاوت با مقدار برابر باشند.
    مثال ساده اش اینه که شما یک فایل تصویری JPEG رو در دو تا شیء Image فراخوانی کنید، تصاویر این دو شیء Image دقیقا برابر هستند، تفاوتی در تصویرشون نیست، ولی این دو تا شیء مجزا هستند، ارجاع شون برابر نیست.
    Image اون مقایسه ظاهر تصویری که شما مد نظرتونه رو نداره. باید در کدتون تغییراتی بدید تا برای مقایسه از ملاک بهتری استفاده بشه.

  7. #7

    نقل قول: مشکل دستور if

    بله، حق با شماست لطف میکنید راهنمایی کنید چه تغییراتی بدم که بتونه مقایسه صحیح رو انجام بده.؟

  8. #8

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    بله، حق با شماست لطف میکنید راهنمایی کنید چه تغییراتی بدم که بتونه مقایسه صحیح رو انجام بده.؟
    از کدی که می نویسید اطلاعی ندارم. ولی فرضا وقتی تصویری رو در PictureBox قرار می دهید می توانید در جای دیگری مقداری ثبت کنید که مشخص بشه که منبع اش چیه.
    مثلا اگر در PictureBox1.Image تصویری رو قرار می دهید، در مشخصه PictureBox1.Tag یک مقدار به عنوان نشانه بنویسید (رشته یا عدد یا هر مقدار دلخواه دیگری) که معلوم بشه این تصویر که قرار دادید منبعش چیه. بعدا موقع بررسی تصویر داخل PictureBox1 دیگه مشخصه Image رو بررسی نکنید، Tag رو بررسی کنید. مثلا :

    PictureBox1.Image = ImageList1.Images(0)
    PictureBox1.Tag = 0


    PictureBox1.Image = ImageList1.Images(1)
    PictureBox1.Tag = 1


    PictureBox1.Image = ImageList1.Images(2)
    PictureBox1.Tag = 2


    If PictureBox1.Tag IsNot Nothing Then
    Select Case PictureBox1.Tag
    Case 0: ' PictureBox1.Image = ImageList1.Images(0)
    MessageBox.Show ("Index 0")
    Case 1: ' PictureBox1.Image = ImageList1.Images(1)
    MessageBox.Show ("Index 1")
    Case 2: ' PictureBox1.Image = ImageList1.Images(2)
    MessageBox.Show ("Index 2")
    End Select
    End If

  9. #9

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    از کدی که می نویسید اطلاعی ندارم. ولی فرضا وقتی تصویری رو در PictureBox قرار می دهید می توانید در جای دیگری مقداری ثبت کنید که مشخص بشه که منبع اش چیه.
    مثلا اگر در PictureBox1.Image تصویری رو قرار می دهید، در مشخصه PictureBox1.Tag یک مقدار به عنوان نشانه بنویسید (رشته یا عدد یا هر مقدار دلخواه دیگری) که معلوم بشه این تصویر که قرار دادید منبعش چیه. بعدا موقع بررسی تصویر داخل PictureBox1 دیگه مشخصه Image رو بررسی نکنید، Tag رو بررسی کنید. مثلا :

    PictureBox1.Image = ImageList1.Images(0)
    PictureBox1.Tag = 0


    PictureBox1.Image = ImageList1.Images(1)
    PictureBox1.Tag = 1


    PictureBox1.Image = ImageList1.Images(2)
    PictureBox1.Tag = 2


    If PictureBox1.Tag IsNot Nothing Then
    Select Case PictureBox1.Tag
    Case 0: ' PictureBox1.Image = ImageList1.Images(0)
    MessageBox.Show ("Index 0")
    Case 1: ' PictureBox1.Image = ImageList1.Images(1)
    MessageBox.Show ("Index 1")
    Case 2: ' PictureBox1.Image = ImageList1.Images(2)
    MessageBox.Show ("Index 2")
    End Select
    End If
    تشکر از شما، این کار رو کردم درست شد.
    فقط جسارتا دو سه تا سؤال دیگه هم داشتم.
    1- با چه کدی میتونم با کلیک روی یه باتن فرم رو مجدد Load کنم
    2-من با یه کد تصاویر داخل picture box رو با کمک تایمر عوض میکنم، ولی برای چند تا picture box باید چند تا تایمر بذارم که مطلوب نیست، چطور میتونم تمام picture box ها رو با به تایمر بصورت جدا جدا به کار بندازم.
    3- با چه کدی میتونم وقتی در قسمت بالای فرم، تب کنترل ایجاد میکنم، اسکرول بار فرم اصلی از زیر تب کنترل ایجاد بشه، و نیاز نباشه که تب کنترل رو به به طریقی ببندی.
    خیلی خیلی از جواب های شما و وقتی که میذارید تشکر میکنم.

  10. #10

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    تشکر از شما، این کار رو کردم درست شد.
    فقط جسارتا دو سه تا سؤال دیگه هم داشتم.
    1- با چه کدی میتونم با کلیک روی یه باتن فرم رو مجدد Load کنم
    واقعا نمی توانید فرم رو از نو Load کنید، مگر اینکه فرم بسته بشه و همونطور که قبلا باز شده بود مجددا باز بشه.
    اما معمولا هدف اینه که همون فرمی که هست بمونه و فقط یکسری نمایش ها داخلش تکرار بشه.
    بستگی داره که موقع Load چه کدی اجرا می کنید که میخواهید مجددا اجرا بشه. اگر صرفا هدف اینه کد داخل Form1_Load مجددا اجرا بشه، Form1_Load رو فراخوانی می کنید :

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form1_Load(Me,EventArgs.Empty)
    End Sub


    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    2-من با یه کد تصاویر داخل picture box رو با کمک تایمر عوض میکنم، ولی برای چند تا picture box باید چند تا تایمر بذارم که مطلوب نیست، چطور میتونم تمام picture box ها رو با به تایمر بصورت جدا جدا به کار بندازم.
    تصوری از اینکه به کار بیاندازید چطور کدی است ندارم، اما می توانید یک مجموعه از PictureBox ها رو داخل حلقه پیمایش کنید و یک کار مشابه رو برای همه شون انجام بدهید :

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    For Each pic As PictureBox In {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    pic.Image = Nothing
    pic.BackColor = Color.LightBlue
    .
    .
    .
    Next
    End Sub

    نقل قول نوشته شده توسط Mahdi.21267 مشاهده تاپیک
    3- با چه کدی میتونم وقتی در قسمت بالای فرم، تب کنترل ایجاد میکنم، اسکرول بار فرم اصلی از زیر تب کنترل ایجاد بشه، و نیاز نباشه که تب کنترل رو به به طریقی ببندی.
    متوجه نشدم این توصیفی که می کنید چه ظاهری داره.

  11. #11

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    از کدی که می نویسید اطلاعی ندارم. ولی فرضا وقتی تصویری رو در PictureBox قرار می دهید می توانید در جای دیگری مقداری ثبت کنید که مشخص بشه که منبع اش چیه.
    مثلا اگر در PictureBox1.Image تصویری رو قرار می دهید، در مشخصه PictureBox1.Tag یک مقدار به عنوان نشانه بنویسید (رشته یا عدد یا هر مقدار دلخواه دیگری) که معلوم بشه این تصویر که قرار دادید منبعش چیه. بعدا موقع بررسی تصویر داخل PictureBox1 دیگه مشخصه Image رو بررسی نکنید، Tag رو بررسی کنید. مثلا :

    PictureBox1.Image = ImageList1.Images(0)
    PictureBox1.Tag = 0


    PictureBox1.Image = ImageList1.Images(1)
    PictureBox1.Tag = 1


    PictureBox1.Image = ImageList1.Images(2)
    PictureBox1.Tag = 2


    If PictureBox1.Tag IsNot Nothing Then
    Select Case PictureBox1.Tag
    Case 0: ' PictureBox1.Image = ImageList1.Images(0)
    MessageBox.Show ("Index 0")
    Case 1: ' PictureBox1.Image = ImageList1.Images(1)
    MessageBox.Show ("Index 1")
    Case 2: ' PictureBox1.Image = ImageList1.Images(2)
    MessageBox.Show ("Index 2")
    End Select
    End If
    تشکر از شما، این کار رو کردم درست شد.
    فقط جسارتا دو سه تا سؤال دیگه هم داشتم.
    1- با چه کدی میتونم با کلیک روی یه باتن فرم رو مجدد Load کنم
    2-من با یه کد تصاویر داخل picture box رو با کمک تایمر عوض میکنم، ولی برای چند تا picture box باید چند تا تایمر بذارم که مطلوب نیست، چطور میتونم picture box ها رو با به تایمر بصورت جدا جدا به کار بندازم.
    3- با چه کدی میتونم وقتی در قسمت بالای فرم، تب کنترل ایجاد میکنم، اسکرول بار فرم اصلی از زیر تب کنترل ایجاد بشه، و نیاز نباشه که تب کنترل رو به به طریقی ببندی.
    خیلی خیلی از جواب های شما و وقتی که میذارید تشکر میکنم.

  12. #12

    نقل قول: مشکل دستور if

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    واقعا نمی توانید فرم رو از نو Load کنید، مگر اینکه فرم بسته بشه و همونطور که قبلا باز شده بود مجددا باز بشه.
    اما معمولا هدف اینه که همون فرمی که هست بمونه و فقط یکسری نمایش ها داخلش تکرار بشه.
    بستگی داره که موقع Load چه کدی اجرا می کنید که میخواهید مجددا اجرا بشه. اگر صرفا هدف اینه کد داخل Form1_Load مجددا اجرا بشه، Form1_Load رو فراخوانی می کنید :

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Form1_Load(Me,EventArgs.Empty)
    End Sub



    تصوری از اینکه به کار بیاندازید چطور کدی است ندارم، اما می توانید یک مجموعه از PictureBox ها رو داخل حلقه پیمایش کنید و یک کار مشابه رو برای همه شون انجام بدهید :

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    For Each pic As PictureBox In {PictureBox1, PictureBox2, PictureBox3, PictureBox4}
    pic.Image = Nothing
    pic.BackColor = Color.LightBlue
    .
    .
    .
    Next
    End Sub


    متوجه نشدم این توصیفی که می کنید چه ظاهری داره.
    تشکر از شما، خیلی لطف کردید. 🌹

تاپیک های مشابه

  1. نشناختن دستور toast.maketext در آندروید استودیو
    نوشته شده توسط araman59 در بخش Android Studio
    پاسخ: 2
    آخرین پست: یک شنبه 28 دی 1393, 19:37 عصر
  2. پاسخ: 4
    آخرین پست: سه شنبه 23 مهر 1392, 05:57 صبح
  3. پاسخ: 3
    آخرین پست: چهارشنبه 03 فروردین 1390, 23:51 عصر

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

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