PDA

View Full Version : سوال: select نگه داشتن در لیست ویو



پرستو پارسایی
پنج شنبه 07 آذر 1398, 01:07 صبح
با سلا م من تعدادی عکس رو از دیتا بیسم (SQL) لود میکنم تو لیست ویو با ایمیج لیست .
وقتی یک رکورد رو سلکت میکنم چطور باید تو حالت سلکت نگهش دارم مثلا اگر وقتی سلکت هست خواستم در یک تکست باکس متنی بنویسم از حالت سلکت خارج نشه
راستش خیلی گشتم و کدهای مختلفی استفاده کردم و جواب نگرفتم .
آیا میشه از Trim استفاده کرد؟
ممنون میشم در صورت اطلاع پاسخ بدهید

ROSTAM2
پنج شنبه 07 آذر 1398, 09:01 صبح
سلام-
لیست ویو ی خصوصیت HideSelection داره که باید False بشه.

پرستو پارسایی
پنج شنبه 07 آذر 1398, 12:28 عصر
ممنونم قبلا این کار رو انجام دادم ولی نشده

the king
پنج شنبه 07 آذر 1398, 13:55 عصر
ممنونم قبلا این کار رو انجام دادم ولی نشده

وقتی در TextBox چیزی می نویسید اون آیتمی که قبلا در ListView انتخاب کرده بودید کلا مثل سایر آیتم ها زمینه اش فرضا سفید میشه، یا همچنان متفاوت از بقیه ولی فرضا خاکستری رنگ میشه؟

پرستو پارسایی
پنج شنبه 07 آذر 1398, 17:42 عصر
کلا رنکش مثل قبلش میشه یعنی در اصل Deselect میشه های لایت یا خاکستری نمیمونه

the king
پنج شنبه 07 آذر 1398, 18:49 عصر
کلا رنکش مثل قبلش میشه یعنی در اصل Deselect میشه های لایت یا خاکستری نمیمونه

پس مشکل تون ربطی به وضعیت HideSelection نداره. از اونجایی که خود به خود Selection اش رو از دست نخواهد داد یا جایی در کد دارید مستقیم یا غیر مستقیم محتوای ListView رو از نو پر می کنید یا در رخدادی کاری شبیه به ()listView1.SelectedItems.Clear رو انجام میدید.
مثلا اگر صرفا همچین کدی باشه، انتقال Focus به textBox1 یا تایپ کردن داخلش منجر به از دست رفتن Selection داخل ListView نمیشه :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ListView1.Items.Add(TextBox1.Text)
End Sub


اما اگر همچین کدی رو اضافه کنم تا textBox1 اون Focus رو گرفت انتخاب داخل ListView میپره :

Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
ListView1.SelectedItems.Clear()
End Sub



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

Dim selection(ListView1.SelectedIndices.Count) As Integer
ListView1.SelectedIndices.CopyTo(selection, 1)
ListView1.SelectedItems.Clear()
ReloadList()
Dim i As Integer
For i = 1 To UBound(selection)
ListView1.SelectedIndices.Add(selection(i))
Next


بدون دیدن کد در همین حد میتونم نظر بدم.

nerset
جمعه 08 آذر 1398, 01:35 صبح
من بیشتر به بخش گرافیک دو بعدی vb.net علاقه مند هستم و چندان با ابزارهای مختلف vb.net آشنایی ندارم.
در یک فرم همواره فقط می توان، یک شی را در لحظه به صورت انتخاب شده نگه داشت ولی به طور کلی در چنین مواقعی که قابلیت انتخاب از یک شی به شی دیگر می رود ولی همچنان می خواهیم که به نوعی وضعیت انتخاب سطر مورد نظر در لیست هم نمایش داده شود و امیدوارم که منظور سئوالتان را درک کرده باشم.
پس می توان دو راهکار داشت که راهکار اول ساده تر است یعنی باید یک خط کد اضافه نوشت که با انتخاب آن سطر علاوه بر نمایش محتویاتی که قرار است نشان داده شود رنگ آن سطر و اگر امکانش نبود حداقل رنگ نوشته داخل آن سطر تغییر کند و البته در همین راستا باید رنگ سطر انتخاب شده قبلی هم به رنگ معمول دیگر سطرها برگردد که برای شناسایی اینکه قبلا چه سطری انتخاب شده بود می توان شماره سطر انتخاب شده را همواره داخل یک متغییر قرار داد تا ابتدا در کد دستوری گفته شود که رنگ سطر قبلی با شماره سطر داخل متغیر به رنگ عادی برگردد و سپس شماره سطر جدید در متغییر وارد شود.
ولی روش دوم که البته ممکن است در اینجا کاربرد نداشته باشد و بیشتر برای حل مشکلات رسم گرافیکی به کار می رود استفاده از دو فرم جداگانه است یعنی جدول در یک فرم باشد و بخش نمایش محتویات مورد انتخاب شده در یک فرم دیگر که در این حالت چون دو فرم داریم به طور معمول با انتخاب شی دوم دیگر مشکلی در انتخاب شی اول پیش نمی آید چون این دو شی در دو فرم مختلف هستند و تداخلی از نظر انتخاب شدن با یکدیگر ندارند.
ولی با این حال روش اول پیشنهاد می شود که هم ساده تر است و هم محیط نرم افزار از فرم های مختلف شلوغ نمی شود.

پرستو پارسایی
جمعه 08 آذر 1398, 11:54 صبح
از راهنمایی هر دو دوست گرامی تشکر میکنم همانطور که فرمودید با نگه داشتن مقدار سلکت شده مشکلم حل شد. (سپاسگزارم)