PDA

View Full Version : سوال: اضافه کردن به tile size در list view با کد



jebreily
شنبه 07 دی 1398, 14:37 عصر
چطور به height لیست ویو با کد اضافه کنم ؟؟؟
وقتی همینجوری می زنم میگه که متغیر نیست

the king
شنبه 07 دی 1398, 15:43 عصر
چطور به height لیست ویو با کد اضافه کنم ؟؟؟
وقتی همینجوری می زنم میگه که متغیر نیست

دو جور نوع داده داریم، value type و reference type. که کلاس ها reference type هستند و struct ها (مثل همون Size که میخواهید Height اش رو تغییر بدید) value type اند.
وقتی شما می نویسید listView.Parent، چون Parent از نوع Control ئه که یک کلاس ئه، شی همون Parent رو تحویل می گیرید، نه یک کپی از مقدارش.
و برای همین اگر بنویسید listView.Parent.BackColor = Color.Red مشخصه BackColor ئه listView.Parent رو تغییر دادید.
اما وقتی شما listview.TitleSize رو دریافت می کنید، چون TileSize از نوع Size ئه که struct ئه و value type ئه، یک کپی از مقدار TitleSize رو بهتون تحویل میده، نه خود TitleSize رو.
برای همین شما وقتی می نویسید listview.TitleSize.Height، هیچ ارتباطی بین Height و listView برقرار نمیشه، شما یک کپی از مقدار TileSize رو دریافت کردید، نه خود TitleSize رو. reference ای بین شون نیست.
برای همینه که شما نمی توانید فیلد های یک مشخصه مثل TileSize رو تغییر بدید، باید خود TitleSize رو جایگزین کنید :


listView1.TileSize = new Size(listView1.TileSize.Width, 100);

این در مورد همه مشخصه (Property) هایی که از نوع struct هستند صدق میکنه.

jebreily
شنبه 07 دی 1398, 15:49 عصر
ممنونم از شما.

ASHKANLAEI
یک شنبه 08 دی 1398, 17:55 عصر
مطلب خیلی جالبی بود آقای the king. این در فرم که صدق نمیکنه، میکنه؟ چون فکر میکنم قبلاً این کد رو نوشتم:
frm.Height += 100; و مشکلی پیش نیومده.

the king
یک شنبه 08 دی 1398, 19:47 عصر
مطلب خیلی جالبی بود آقای the king. این در فرم که صدق نمیکنه، میکنه؟ چون فکر میکنم قبلاً این کد رو نوشتم:
frm.Height += 100; و مشکلی پیش نیومده.

نه. صدق نمی کنه چون Height مشخصه خود اون Form ئه که struct هم نیست. get / set کردن Height که یک عدد ئه در خود کلاس فرم انجام میشه، ارجاع لازم نداره. چیزی بین Height و Form نیست که value type باشه یا نباشه.
اما مثلا frm.Size.Height رو نمیشه مثل frm.Height تغییر داد، چون Size این وسط قرار داره. که مشخصه Form هست، value type ئه و به همین دلیل بین Heght و frm ارتباط برقرار نمیشه. مشابه frm.Size.Height یا frm.Bounds.Height

mahiv70947
دوشنبه 09 دی 1398, 08:42 صبح
کلاس آموزشی