+3 امتیاز
سلام

من یه برنامه ساختم و در این مرحله موندم طرف میگه اطلاعات بانک به صورت دکمه یا باتن نمایش داده بشه

یعنی طرف میاد لیست خدماتی رو تعریف میکنه در داخل بانک مثل کد و نام خدمات

موقع اجرا به تعداد خدمات باتن یا دکمه در فرم ایجاد بشه

چیکار میتونم بکنم

البته خدمات خیلی زیاده بخاطر همین نمیتونم برای هر کدوم یک دکمه تعریف کنم

لطفا راهنامایی کنید

2 پاسخ

+2 امتیاز
سلام.

کارفرما خدمات شرکت رو باید معرفی کنه و شما براش برنامه بنویسید تا اطلاعات خدمات رو براشون پردازش کنه.

اگر نام و کد خدمات رو میخوان ببینن  میتونید از DataGridView  یا combobox استفاده کنید.
برنامه بدین صورت هست که کاربر میاد

چند گروه اصلی تعریف میکنه

چند گروه فرعی تعریف میکنه

و برای هر گروه فرعی چندین خدمات

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

حالا من موندم چه جوری میشه  طرف بیاد مثلا 10 تا گروه اصلی تعریف کنه

و در فرم تحویل سفارش 10 تا دکمه ظاهر بشن که گروه های اصلی رو نشون بده

و بعد 30 تا برای هر گروه اصلی که گروه فرعی تعریف کرده اونا به صورت 30 تا دکمه نمایش داده بشن

لطفا راهنایی کنید اگر امکانش هست به چه طریق؟
توسط (2,130 امتیاز) 7 26 143

سلام.

شما میتونید شی از کلاس button ایجاد کنید و خصوصیات اون رو تنظیم و در نهایت به form - tabcontrol - و panel - GroupBox و ... اضافه کنید.

شما به اینصورت میتونید کارتون رو انجام بدید زمانی که کاربر بر روی دکمه گروهها کلیک میکنه گروههای اصلی رو از پایگاه داده بخونید و در یک datatable قرار بدید و با استفاده از حلقه for یا foreach به سطرهای datatable دسترسی پیدا کنید و برای هر یک از گروه ها یک button با خصوصیات مد نظر خودتون ایجاد کنید و سپس button رو به فرم یا کنترلهای دلخواه خودتون اضافه کنید و همچنین کد گروه  رو به عنوان بخشی از نام button در نظر بگیرید و زمانی که کاربر بر روی هر یکی از دکمه ها کلیک کرد با استفاده از کد گروه  زیر گروه های اون از پایگاه داده فراخوانی کنید و دکمه های مورد نیاز رو براش ایجاد.

 یک رویداد کلی کلیک هم میتونید براش در نظر بگیرید و با استفاده از اون رویداد نام دکمه را بخونید و به گروهها دسترسی داشته باشید.

کاری که شما میخواید انجام بدید ریزه کاریهای داره مثل جلوگیری از اضافه شدن چند باره رویدادها(تو کدی که من نوشتم رویدادها چند باره اضافه نمیشن)، نحوه قرار گیری دکمه ها که از کنترل یا فرم بیرون نزنه و ... که باید ریزه کاریها رو در نظر بگیرید.

این یه کد ساده است که امیدوارم بتونه مفید باشه یه پروژه ایجاد کنید و یک button و یک panel به پروژه اضافه کنید:

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
           //پاک کردن کنترلها در صورت وجود
           // برای ایجاد کنترلهای جدید
            if (panel1.Controls.Count > 0)
                panel1.Controls.Clear();

            //محل قرار گیری دکمه بر حسب محور y
            int ylocation = 0;

            /* ***************************
             * تعریف دیتاتیبل به صورت دستی
             * که شما باید اطلاعات ر از پایگاه
             * داده واکشی کنید و در دیتا تیبل
             * قرار بدید
             ****************************/
            DataTable dt = new DataTable();
            dt.Columns.Add("NameGrooh");
            dt.Columns.Add("id");
            dt.Rows.Add("خشکبار", "1");
            dt.Rows.Add("لبنیات", "2");
            dt.Rows.Add("سبزیجات", "3");
            
            /****************************
             * دسترسی به رکوردهای واکشی شده
             * و ایجاد دکمه با خصوصیات مناسب
             * به ازای هر گروه
             * *************************/
            foreach (DataRow row in dt.Rows)
            {
                Button button = new Button();
                button.Name = "btn_" + row["id"];
                button.Text = row["NameGrooh"].ToString();
                button.Location = new Point(0, ylocation);
                button.Size = new Size(90, 30);
                panel1.Controls.Add(button);
                panel1.Controls[button.Name].Click += panel1_Click;
                ylocation += 30;
            }
        }

        private void panel1_Click(object sender, EventArgs e)
        {
            if (this.ActiveControl.GetType() == typeof(Button))
            {
                // نمایش نام گروه
                MessageBox.Show(this.ActiveControl.Name);
                //  جدا سازی کد گروه
                string ACN = this.ActiveControl.Name;
                string id = ACN.Substring(ACN.IndexOf('_') + 1);
                //نمایش کد گروه
                MessageBox.Show("کد گروه  : " + id);
                // کد جستجو و ... بعد از جداسازی کد گروه
            }
        }
    }
}

 

حتما مراقب باشید تا رویدادها به صورت چند باره اضافه نشن برای این کار کنترلها رو میتونید حذف کنید که شما به احتمال زیاد باید اینکار رو انجام بدبد.

روشهای دیگری هم وجود داره...

امیدوارم تونسته باشم کمکتون کنم.

توسط (2,595 امتیاز) 5 15 90
+1 امتیاز
برنامه بدین صورت هست که کاربر میاد

چند گروه اصلی تعریف میکنه

چند گروه فرعی تعریف میکنه

و برای هر گروه فرعی چندین خدمات

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

حالا من موندم چه جوری میشه  طرف بیاد مثلا 10 تا گروه اصلی تعریف کنه

و در فرم تحویل سفارش 10 تا دکمه ظاهر بشن که گروه های اصلی رو نشون بده

و بعد 30 تا برای هر گروه اصلی که گروه فرعی تعریف کرده اونا به صورت 30 تا دکمه نمایش داده بشن

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

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...