View Full Version : ایده برای طراحی فرم
Davood_amega
پنج شنبه 04 شهریور 1389, 10:32 صبح
سلام به همه دوستان عزیز
عرض کنم که بنده برنامه ای هتل دارم می نویسم و در فرمی به همچنین چیزی نیاز دارم :
1- که به اندازه تعداد اتاقی که دارم ، با نامی که مشخص کردم عکسی نمایش داده شود . مثلا اگر تو بانک 10 تا اتاق داشته باشم 10 تا عکس نمایش می دهد .
2- اگر اتاق پر باشد با رنگ مخصوص به خود نمایش داده می شود و اگر اتاق خالی باشد هم عکس دیگری انتخاب می شود .
3- می توانیم چند تا از عکس ها را انتخاب کنیم که با انتخاب هر کدوم نام اتاق را می توانیم استفاده کنیم .
حالا مشکل اینجاست که تو ظاهرش موندم و نمیدونم چه جوری باید طراحی بشه . دوستان اگه نمونه کاری دارند لطفا معرفی کنند . و اگر ایده بهتری هم دارند شرح دهند .
پیشاپیش از همه که تو این مطلب کمکم می کنن تشکر می کنم .
مهدی فرزاد
پنج شنبه 04 شهریور 1389, 11:53 صبح
سلام
من عکس یک نمونه کارم رو برات گذاشتم
روش کارم این بود
یک UserControl درست کردم که دراون چند کنترل TextBlock و یک PictureBox بود
این UserControl موقع لود شدن یک متغییر ورودی داشت که شماره ID محصول دز دیتابیس بود و بر اساس این ID اطلاعات اون محصول رو در TextBlock و عکسش رو در PictureBox قرار میداد
حالا
توی فرمم بک ScrollViewer گذاشتم و توی اون هم یک WarpPanel
خاصیت VerticalScrollBarVisibility مربوط به ScrollViewer رو برار Auto گذاشتم
بوسیله یک حلقه For (از i=0 تا تعداد رکورد های جدول دیتابیس مربوط به محصول) در هر بار یک New از UserControl درست می کرد و مقدار i به عنوان پارامتر وردی به UserControl پایس کردم (پس userConrol اطلاعات برای اون ID ثبت میکرد )و بعد با یک دستور Add اونو به WarpPanel اضافه میکرد و بعد میرفت یک UserCont دیگه درست میکرد و زیر قبلی اضافه میکرد (یا کنارش بستگی به تنظیم WarpPanel) تا زمانی که حلقه تموم شه
نتیجه شکل زیر میشد
حالا شما 3 محصول داشتی 3 تا عکس و مشخصات اضافه میشه ( 3 تا UserConrol ) اگه 100 داشتی 100 تا اضافه میشه کاملا پویا
mahboube
پنج شنبه 04 شهریور 1389, 12:34 عصر
سلام آقاي Mehdi550u
اينو كلا تو blend طراحي كرديد؟يعني ميشه مثل فلش طراحي كرد و مثل يك فرم .net ازش استفاده كرد؟
ممنون.
مهدی فرزاد
پنج شنبه 04 شهریور 1389, 14:13 عصر
سلام آقاي Mehdi550u
اينو كلا تو blend طراحي كرديد؟يعني ميشه مثل فلش طراحي كرد و مثل يك فرم .net ازش استفاده كرد؟
ممنون.
بله توی blend طراحی کردم
گقتم شما کل فرمت رو با blend طراحی کنید و کدهاش رو با Vs
وسط کار هم هرجا خواستی دوباره فرمت رو تغییر بدی کافی روی فایل برنامه کلیک راست کنی و برا ی اجراش Blend رو انتخاب کنی تا بجای Vs توی Blend باز بشه
Davood_amega
یک شنبه 14 شهریور 1389, 11:33 صبح
یک UserControl درست کردم که دراون چند کنترل TextBlock و یک PictureBox بود
این UserControl موقع لود شدن یک متغییر ورودی داشت که شماره ID محصول دز دیتابیس بود و بر اساس این ID اطلاعات اون محصول رو در TextBlock و عکسش رو در PictureBox قرار میداد
حالا توی فرمم بک ScrollViewer گذاشتم و توی اون هم یک StackPanel
خاصیت VerticalScrollBarVisibility مربوط به ScrollViewer رو برار Auto گذاشتم
بوسیله یک حلقه For (از i=0 تا تعداد رکورد های جدول دیتابیس مربوط به محصول) در هر بار یک New از UserControl درست می کرد و مقدار i به عنوان پارامتر وردی به UserControl پایس کردم (پس userConrol اطلاعات برای اون ID ثبت میکرد )و بعد با یک دستور Add اونو به StackPanel اضافه میکرد و بعد میرفت یک UserCont دیگه درست میکرد و زیر قبلی اضافه میکرد (یا کنارش بستگی به تنظیم StackPanel ) تا زمانی که حلقه تموم شه
حالا شما 3 محصول داشتی 3 تا عکس و مشخصات اضافه میشه ( 3 تا UserConrol ) اگه 100 داشتی 100 تا اضافه میشه کاملا پویا
ممنون Mehdi550u عزیز یه نمونه ضمیمه کردم که طبق همین مثال می خواهم مشکلاتم را بازگو کنم که سه تا UserControl به نامهای UC1 و UC2 و UC3 درست کردم که اگر اتاق فرضا پر بود UC1 را ایجاد کند اگر اتاق خالی بود UC2 و اگر اتاق خراب بود UC3 را ایجاد کند .
1- همانطور که در پروژه خواهید دید بنده قبل از اجرا سه UserControl را ایجاد کرده ام اما طرز ایجاد UserControl را در زمان اجرا نتوانستم پیدا کنم .
2- چه طور مقدار TextBlock یک UserControl را در بین فرضا 15 تا UserControl برگردانم .
3- به چه صورت به ScrollViewer یا StackPanel بگویم که تعداد ستونها را سه در نظر بگیرد که مثلا اگر 15 تا UserControlدر زمان اجرا ایجاد شد در 5 سطر اینها را نمایش دهد .
مهدی فرزاد
یک شنبه 14 شهریور 1389, 16:14 عصر
سلام
شما باید بجای کنترل StackPanel از WarpPanel استفاده میکردید
بعد به شکل زیر کد Xalm رو اصلاح کن
<Grid>
<ScrollViewer Margin="5,20,5,40" Name="scrollViewer1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<WrapPanel x:Name="wrapPanel1" MaxWidth="453"></WrapPanel>
</ScrollViewer>
<Button Content="ایجاد" Height="23" Name="_button1" Width="75" Click="button1_Click" Margin="21,252,353,8" />
</Grid>
دقت کن Orientation="Horizontal" MaxWidth="439
MaxWidth برای این تنظیم شده که از سه ردیف بیشتر نشه
حالا توی متد button1_Click
بنویس
for (int i = 0; i < 15; i++)
{
UC1 uc1 = newUC1();
uc1.textBox1.Text = "متن شماره " + i;
wrapPanel1.Children.Add(uc1);
}
این طریقه ایحاد UserControl بود
ولی تو توی برنامت بر اساس دیتا بیس for رو تشکیل میدی به همون روشی که قبلا گفتم
و همچنین نیازی به ساخت 3 تا یوزر کنترل نداری
توی کلاس یوزر کنترلت مشخص کن مثلا اگه اتاق پر بود عکس یک اگه خالی بود عکس دو و .... رو نشون بده
باید به کلاست یوزر کنترلت هنگام New شدن یا بعد از New به وسیله خواص (Property) مقدار پاس بدی و کنترلت میتونه توی کلاسش بر اساس مقدار پاس شده تصمیم بگیره چه عکسی رو نمایش بده
اگه میخوای یک نمونه با دیتا بیس بده تا برات درستش کنم
در ضمن من برای نشون دادن اینکه چه جوری مقدار TextBox رو برگردونی توی یوزر کنترلت بجای چک باکس از باتون استفاده کردم هرچی عشقت میکشه توی تکس باکس بنویس و کلیلک کن و نتیجه رو ببین
اینم ضمیمش
Davood_amega
یک شنبه 14 شهریور 1389, 18:25 عصر
با راهنمایی های Mehdi عزیز این تغییرات را دادم به این صورت که از یک User Control استفاده کردم و کلیه کارها در User Control انجام میشه.
Button1_Click به صورت زیر شد .
for (int i = 0; i < 15; i++)
{
UC1 uc1 = new UC1(i);
wrapPanel1.Children.Add(uc1);
}و کد مربوط به User Control به این صورت تغییر پیدا کرد .
public partial class UC1 : UserControl
{
public UC1(Int32 i)
{
InitializeComponent();
textBox1.Text = "متن شماره " + i;
ImageSourceConverter imgConv = new ImageSourceConverter();
string path1 = "pack://application:,,/Image/png18.png";
ImageSource imageSource1 = (ImageSource)imgConv.ConvertFromString(path1);
string path2 = "pack://application:,,/Image/png6.png";
ImageSource imageSource2 = (ImageSource)imgConv.ConvertFromString(path2);
string path3 = "pack://application:,,/Image/png7.png";
ImageSource imageSource3 = (ImageSource)imgConv.ConvertFromString(path3);
if (i % 3 == 0) image1.Source = imageSource1;
else if (i % 3 == 1) image1.Source = imageSource2;
else image1.Source = imageSource3;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(textBox1.Text);
}
}که در مورد پروژه بنده مثلا اگر با قیمانده صفر بود اتاق خالیه اگر یک بود اتاق پر است و اگر 2 بود اتاق آماده نیست .
Shahab_H
پنج شنبه 25 شهریور 1389, 19:12 عصر
منم سوالم مشابه بود گفتم تاپیک جدیدی باز نکنم
بخشیازبرنامه ای که می نویسم بخش انبارداریه که بشه به انبار جنش اضافه کرد و اطلاعات انبار رو دید و سرچ کرد و ... جنس هایی که اضافه میشه ممکنه از قبل در دیتابیس موجود باشه یا جنس جدیدی باشه. به نظرتون فرمم چه شکلی باشه که راحت بشه جنس ها رو اضافه یا حذف کرد و اطلاعات رو راحت دید و تغییرات رو در دیتابیس راحت بشه اعمال کرد؟
در بخش فروش هم میخوام فاکتور درست شه. یعنی فروشنده از جنس های موجود انتخاب کنه و تعداد رو بزنه و قیمت پایه و مجموع و ... رو نشون بده. برای این مورد چه شکل فرمی رو پیشنهاد می کنید؟
مهدی فرزاد
یک شنبه 04 مهر 1389, 16:06 عصر
سلام
چن وقته من و دوست خوبم ricky22 داریم روی یک پروژه کار میکنیم که من برای اون پروژه TabControl توی Blend طراحی کردم که به عنوان منوی اصلی برنامه قراره ازش استفاده بشه
به نظرم چیز خوبی از آب در اومد و گفتم اینجا نمونش رو بگذارم شاید برای طراحی های دوستان ایده خوبی باشه
برای اجرای فایل به دات نت 4 نیاز هست
با عرض شرمندگی از قرار دادن سورس معذورم
mmd2009
چهارشنبه 07 مهر 1389, 06:58 صبح
برنامه FlashGet3.5 هم ظاهر خوبی داره. من چند روز پیش با Blend همچین چیزی رو طراحی کردم که چیز خوبی از کار در اومد.( واسه کار اولم با بلند خوب چیزی بود :بامزه: ) اون برنامه هم ظاهرش بی نهایت کاربر پسنده ( حداقل واسه من :لبخند:)
اینم ظاهر برنامش اگر ندیدی :
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.