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

نام تاپیک: کنترل تکرار اطلاعات در listbox

  1. #1

    کنترل تکرار اطلاعات در listbox

    با درود
    دوستان من با کد زیر یکسری نام فایل رو در لیکس باکس فراخوانی میکنم
    Me.lstListBox1.Items.AddRange(dlgOpen.FileNames.Se  lect(Function(f) IO.Path.GetFullPath(f)).ToArray)

    میخواستم بدونم چطوری میتونم با کمک همین کد بگم اگر اسم فایل قبلا تو لیست باکس وجود داشت مجددا اون رو نیاره ؟
    ممنون از دوستان


  2. #2

    نقل قول: کنترل تکرار اطلاعات در listbox

    کد اینلاینش رو نتونستم بنویسم ولی این کد رو ببینین میشه؟
    For Each element In dlgOpen.FileNames.Select(Function(f) IO.Path.GetFullPath(f)).ToArray
    If Not Me.lstListBox1.Items.Contains(element) Then Me.lstListBox1.Items.Add(element)
    Next
    آخرین ویرایش به وسیله ASHKANLAEI : یک شنبه 22 دی 1398 در 20:25 عصر

  3. #3

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط hrj1981 مشاهده تاپیک
    با درود
    دوستان من با کد زیر یکسری نام فایل رو در لیکس باکس فراخوانی میکنم
    Me.lstListBox1.Items.AddRange(dlgOpen.FileNames.Se  lect(Function(f) IO.Path.GetFullPath(f)).ToArray)

    میخواستم بدونم چطوری میتونم با کمک همین کد بگم اگر اسم فایل قبلا تو لیست باکس وجود داشت مجددا اون رو نیاره ؟
    ممنون از دوستان
    مثلا اینطوری :

    Dim items = Me.lstListBox1.Items.OfType(Of String).ToList()
    items.AddRange(dlgOpen.FileNames.Select(Function(f ) IO.Path.GetFullPath(f)))
    Me.lstListBox1.Items.Clear()
    Me.lstListBox1.Items.AddRange(items.Distinct().ToA rray())

  4. #4

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    کد اینلاینش رو نتونستم بنویسم ولی این کد رو ببینین میشه؟
    For Each element In dlgOpen.FileNames.Select(Function(f) IO.Path.GetFullPath(f)).ToArray
    If Me.lstListBox1.Items.Contains(element) Then
    Me.lstListBox1.Items.Add(element)
    End If
    Next
    فکر کنم شرط باید If Not باشه، If Not Me.lstListBox1.Items.Contains(element) Then

  5. #5

    نقل قول: کنترل تکرار اطلاعات در listbox

    ممنونم دوستان
    من خودم یه جا دیدم از where استفاده کرده اما هرکاری کردم نتونستم به صورت اینلاین بنویسم

  6. #6

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط hrj1981 مشاهده تاپیک
    ممنونم دوستان
    من خودم یه جا دیدم از where استفاده کرده اما هرکاری کردم نتونستم به صورت اینلاین بنویسم
    پافشاری روی مختصر مفید نوشتن معمولا کارایی رو فدای مختصر کردن کد میکنه. ظاهر کد بهتر میشه ولی عوضش کندش میکنه.
    برای همینه که خود مایکروسافت در کدهای NET Framework. برای تعاریف خود Linq از Linq استفاده کرده ولی عموما برای پیاده سازی سایر موارد از Linq استفاده ای نکرده و کد های طولانی تری رو با تعریف متغیر و حلقه های for و if نوشته. کد های طولانی تر ولی با سرعت اجرای خیلی بالاتر.

    Me.lstListBox1.Items.AddRange((From item In dlgOpen.FileNames.Select(Function(f) IO.Path.GetFullPath(f)) Where lstListBox1.Items.Contains(item) = False).ToArray())

  7. #7

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    فکر کنم شرط باید If Not باشه، If Not Me.lstListBox1.Items.Contains(element) Then
    بله ببخشید حواسم نبود اشتباه نوشتم ویرایشش کردم ببینید درسته؟

  8. #8

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    بله ببخشید حواسم نبود اشتباه نوشتم ویرایشش کردم ببینید درسته؟
    بسیار عالی
    بله درست کار میکنه
    سپاس گذارم

  9. #9

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    پافشاری روی مختصر مفید نوشتن معمولا کارایی رو فدای مختصر کردن کد میکنه. ظاهر کد بهتر میشه ولی عوضش کندش میکنه.
    برای همینه که خود مایکروسافت در کدهای NET Framework. برای تعاریف خود Linq از Linq استفاده کرده ولی عموما برای پیاده سازی سایر موارد از Linq استفاده ای نکرده و کد های طولانی تری رو با تعریف متغیر و حلقه های for و if نوشته. کد های طولانی تر ولی با سرعت اجرای خیلی بالاتر.

    Me.lstListBox1.Items.AddRange((From item In dlgOpen.FileNames.Select(Function(f) IO.Path.GetFullPath(f)) Where lstListBox1.Items.Contains(item) = False).ToArray())
    از شما دوست عزیز هم ممنونم بابت راهنمایی
    البته بیشتر خودم دوست داشتم یاد بگیرم چجوری میشد از این طریق هم کد رو نوشت که شما زحمت کشیدید.
    سپاس گذارم

  10. #10

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    پافشاری روی مختصر مفید نوشتن معمولا کارایی رو فدای مختصر کردن کد میکنه. ظاهر کد بهتر میشه ولی عوضش کندش میکنه.
    برای همینه که خود مایکروسافت در کدهای NET Framework. برای تعاریف خود Linq از Linq استفاده کرده ولی عموما برای پیاده سازی سایر موارد از Linq استفاده ای نکرده و کد های طولانی تری رو با تعریف متغیر و حلقه های for و if نوشته. کد های طولانی تر ولی با سرعت اجرای خیلی بالاتر.

    Me.lstListBox1.Items.AddRange((From item In dlgOpen.FileNames.Select(Function(f) IO.Path.GetFullPath(f)) Where lstListBox1.Items.Contains(item) = False).ToArray())
    ببخشید جناب the king، مگه اول عبارت داخل پرانتز انجام نمیشه و بعد آرایه اش به AddRange فرستاده نمیشه؟
    فکر میکردم در این صورت نمیشه برای آیتم های قبلی از لیست باکس بررسی کنیم.

  11. #11

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    ببخشید جناب the king، مگه اول عبارت داخل پرانتز انجام نمیشه و بعد آرایه اش به AddRange فرستاده نمیشه؟
    فکر میکردم در این صورت نمیشه برای آیتم های قبلی از لیست باکس بررسی کنیم.
    چرا همینطوره. اول محتویاتی که به AddRange میخواد ارسال بشه باید پردازش بشه تا بعد نوبت به AddRange برسه.
    اما چیزی که به ما این امکان رو داده که مجموعه رو با محتویات ListBox مقایسه کنیم و فیلتر کنیم اون For In Where ئه که دستش در شرط کاملا باز ئه.
    میتونه در Where به هر مجموعه خارجی مثل lstListBox1.Items رجوع کنه و موارد تکراری رو قبل از اینکه با ToArray آرایه ای شکل بگیره و به AddRange ارسالی صورت بگیره فیلتر کنه.

  12. #12

    نقل قول: کنترل تکرار اطلاعات در listbox

    نه منظورم اینه که چون آرایه بعد کامل شدن یکدفعه به لیست باکس اضافه میشه خب توی where ما داریم توی لیست خالی میگردیم درحالی که باید توی موارد قبلی آرایه بگردیم، نه؟

  13. #13

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط ASHKANLAEI مشاهده تاپیک
    نه منظورم اینه که چون آرایه بعد کامل شدن یکدفعه به لیست باکس اضافه میشه خب توی where ما داریم توی لیست خالی میگردیم درحالی که باید توی موارد قبلی آرایه بگردیم، نه؟
    نه، لیست خالی نبوده. فرضا قبلا file1.txt و file2.txt و file3.txt و file4.txt رو با dlgOpen انتخاب کردن و به لیست اضافه کردن.
    حالا دفعه بعدی که file3.txt و file4.txt و file5.txt رو در dlgOpen انتخاب می کنند، فقط file5.txt مورد جدیدی بوده، نمی خوان file3.txt و file4.txt که تکراری هستند دوباره در لیست درج بشه.

  14. #14

    نقل قول: کنترل تکرار اطلاعات در listbox

    نقل قول نوشته شده توسط the king مشاهده تاپیک
    نه، لیست خالی نبوده. فرضا قبلا file1.txt و file2.txt و file3.txt و file4.txt رو با dlgOpen انتخاب کردن و به لیست اضافه کردن.
    حالا دفعه بعدی که file3.txt و file4.txt و file5.txt رو در dlgOpen انتخاب می کنند، فقط file5.txt مورد جدیدی بوده، نمی خوان file3.txt و file4.txt که تکراری هستند دوباره در لیست درج بشه.
    بله حالا متوجه شدم. ممنون

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

  1. پاسخ: 0
    آخرین پست: شنبه 24 بهمن 1394, 23:35 عصر
  2. حرفه ای: تغییر موقعیت متن آیتم های Listbox به مرکز ( ListBox Text Alignment )
    نوشته شده توسط M.T.P در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 06 خرداد 1389, 23:12 عصر
  3. سوال: چگونه می شود گزینه های یک ListBox را در یک ListBox دیگر کپی کرد؟
    نوشته شده توسط mmssoft در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 04 تیر 1388, 23:07 عصر
  4. انتقال ايتمها از يك listbox به listbox ديگر
    نوشته شده توسط bps20590 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: پنج شنبه 17 بهمن 1387, 10:00 صبح
  5. کپی داده ها از یک listbox به listbox دیگر
    نوشته شده توسط kama2222 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: پنج شنبه 14 آذر 1387, 10:42 صبح

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

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