PDA

View Full Version : ساخت لیست به شکل عکس یا سایت فوق در ویندور



Helpco
دوشنبه 21 اسفند 1396, 09:34 صبح
یلام چطوری متونی لیستی برای نمایش محصول و عکس ها مثل این عکس یا سایت درست کرد
147784
http://www.amlakcactus.ir/
مثل لیست وسط سایت که یک اسلایدر عکس کناره و اطلاعات تکمیلی کنارش

رامین مرادی
دوشنبه 21 اسفند 1396, 10:06 صبح
برای این مورد یوزر کنترل بسازید مثل شکل زیر که من تو پیام رسان داخلی شرکتمون نوشتم

Helpco
دوشنبه 21 اسفند 1396, 10:14 صبح
خوب ممکن یک نمونه کوچک بزارید که یک لیست کوجیک باشه که مثل همین عکس که درست کردید

رامین مرادی
دوشنبه 21 اسفند 1396, 11:15 صبح
بفرمایید. فقط من بجای تصویر null فرستادم. اونو خودتون اصلاح کنید

Helpco
دوشنبه 21 اسفند 1396, 11:29 صبح
ممنون دوست خوب ولی معلوم نیست لیست ما چند عدد باشه شما الان دوعدد روی فرم گذاشتی من نمی خوام دستی بزارم مخوام مثل سایت باشه یعنی تعداد بسته به تهداد محصول باشه و اسکرول بخور

رامین مرادی
دوشنبه 21 اسفند 1396, 11:41 صبح
خب برنامه نویسی شی گرایی به همین منظوره دیگه. شما بجای اینکه این کنترل رو بزاری رو فرم، از این به تعداد دلخواه حین کد نویسی نمونه بساز و داخل یه پنلی چیزی نشون بده. تو پیامرسان من ممکنه چند صدتا کنترل ایجاد بشه.من نیومد که مثلا صدتا کنترل بزارم تو صفحه. بلکه بر اساس تعداد پیامها ازش نمونه میسازم و مقدار دهیش میکنم

اینم نمونه کد


for (int i = 0; i < dt.Rows.Count; i++)
{

MsText m = new MsText();
m.setMessage(int.Parse(dt.Rows[i]["Id"].ToString()), dt.Rows[i]["Time"].ToString(), dt.Rows[i]["Date"].ToString(), dt.Rows[i]["Matn"].ToString(), dt.Rows[i]["PerName1"].ToString(), dt.Rows[i]["FileName"].ToString(), bool.Parse(dt.Rows[i]["Show"].ToString()), false, UserId.Substring(0, 5), dt.Rows[i]["FileTitle"].ToString());
m.Margin = new System.Windows.Forms.Padding(100, 0, 0, 0);
flowLayoutPanel1.Controls.Add(m);
flowLayoutPanel1.ScrollControlIntoView(m);

}

Helpco
دوشنبه 21 اسفند 1396, 11:53 صبح
این
MsText m = new MsText();
الان اسم یوز کنترل شما می باشه درست ؟
میشه یک نمونه کوچیک با این حاقه بهم بدید

Helpco
دوشنبه 21 اسفند 1396, 12:11 عصر
این نمونه (http://s9.picofile.com/file/8321524426/WindowsFormsApp2.rar.html)من ساختم اشتباه کجاست

رامین مرادی
دوشنبه 21 اسفند 1396, 12:27 عصر
این
MsText m = newMsText();
الان اسم یوز کنترل شما می باشه درست ؟
میشه یک نمونه کوچیک با این حاقه بهم بدید

همون مثال قبلی که براتون فرستادم رو اصلاح کردم

Helpco
دوشنبه 21 اسفند 1396, 12:41 عصر
ممنون از زحمات شما فقط میشه یک فاصل کوچیک یا طرقی اینها از هم تفکیک کرد ؟

رامین مرادی
دوشنبه 21 اسفند 1396, 12:46 عصر
ممنون از زحمات شما فقط میشه یک فاصل کوچیک یا طرقی اینها از هم تفکیک کرد ؟

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

Helpco
سه شنبه 22 اسفند 1396, 11:46 صبح
شرمنده شما چطوری لبهای فرم کرد کردید ممکن کدش بدید

رامین مرادی
سه شنبه 22 اسفند 1396, 12:40 عصر
دشمنتون شرمنده
این کد ها رو در یوزر کنترل کپی کنید.


private int radius = 20;
[DefaultValue(20)]
public int Radius
{
get { return radius; }
set
{
radius = value;
this.RecreateRegion();
}
}
private GraphicsPath GetRoundRectagle(Rectangle bounds, int radius)
{
GraphicsPath path = new GraphicsPath();
path.AddArc(bounds.X, bounds.Y, radius, radius, 180, 90);
path.AddArc(bounds.X + bounds.Width - radius, bounds.Y, radius, radius, 270, 90);
path.AddArc(bounds.X + bounds.Width - radius, bounds.Y + bounds.Height - radius,
radius, radius, 0, 90);
path.AddArc(bounds.X, bounds.Y + bounds.Height - radius, radius, radius, 90, 90);
path.CloseAllFigures();
return path;
}
private void RecreateRegion()
{
var bounds = new Rectangle(this.ClientRectangle.Location, this.ClientRectangle.Size);
bounds.Inflate(-1, -1);
this.Region = new Region(GetRoundRectagle(bounds, this.Radius));
this.Invalidate();
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
this.RecreateRegion();
}