نمایش نتایج 1 تا 5 از 5

نام تاپیک: ذخیره و بازیابی آیتمهای انتخاب شده از یک مجموعه CheckBox

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    2,010

    Cool ذخیره و بازیابی آیتمهای انتخاب شده از یک مجموعه CheckBox

    به نام خدا.
    سلام.

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

    در این تاپیک با استفاده از یک Enumeration به یک لیست ویو که خصوصیت CheckBoxes از اون True شده آیتم اضافه می شه و سپس با استفاده از رویداد ItemChecked از ListView خصوصیتی که از نوع همون Enumeration هست با توجه به آیتم های انتخابی(CheckedItems) مقدار دهی می شه.


    و این هم بگم که Enumeration یک Attribute داره و اون هم Flags هست و هر کدوم از اجزای اون هم یک Attribute برای گرفتن متنی که قراره در لیست نمایش داده بشه می گیرن.
    Visual Basic


    <Flags()> Public Enum Languages
    <AmbientValue("None")> None = 0
    <AmbientValue("C#‎‎‎‎‎‎‎‎‎‎")> CSharp = 1
    <AmbientValue("Visual Basic")> VB = 2
    <AmbientValue("SQL")> SQL = 4
    <AmbientValue("XML")> XML = 8
    <AmbientValue("HTML")> HTML = 16
    <AmbientValue("C++‎‎‎‎‎‎‎‎‎‎")> CPP = 32
    End Enum

    C#‎‎‎‎‎‎‎‎‎‎


    [Flags]public enum Languages
    {
    [AmbientValue("None")]None = 0,
    [AmbientValue("C#‎‎‎‎‎‎‎‎‎‎")]CSharp =1,
    [AmbientValue("Visual Basic")]VB =2,
    [AmbientValue("SQL")]SQL=4,
    [AmbientValue("XML")]XML =8,
    [AmbientValue("HTML")]HTML =16,
    [AmbientValue("C++‎‎‎‎‎‎‎‎‎‎")]CPP=32
    }


    برای نمایش آیتم ها در لیست (ListView) از رویداد Load از فرم استفاده شده:
    Visual Basic


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dim Value As Integer = 0
    Dim MemInf As MemberInfo
    Dim MemAttr As AmbientValueAttribute
    For Each member As String In [Enum].GetNames(GetType(Languages))
    Value = [Enum].Parse(GetType(Languages), member)
    If Value > 0 Then
    MemInf = GetType(Languages).GetMember(member).FirstOrDefaul t
    MemAttr = MemInf.GetCustomAttributes(GetType(AmbientValueAtt ribute), False).FirstOrDefault
    Me.listView1.Items.Add(MemAttr.Value.ToString).Tag = Value
    End If
    Next
    End Sub

    C#‎‎‎‎‎‎‎‎‎‎


    private void Form1_Load(object sender, EventArgs e)
    {
    int Value;
    MemberInfo MemInf;
    AmbientValueAttribute MemAttr;
    foreach (string member in Enum.GetNames(typeof(Languages)))
    {
    Value = (int)Enum.Parse(typeof(Languages), member);
    if (Value > 0) {
    MemInf = typeof(Languages).GetMember(member).FirstOrDefault ();
    MemAttr = (AmbientValueAttribute)MemInf.GetCustomAttributes( typeof(AmbientValueAttribute), false).FirstOrDefault();
    this.listView1.Items.Add(MemAttr.Value.ToString()) .Tag = Value;
    }
    }
    }


    با فعال کردن CheckBox از هر آیتم تابع LanguagesValue مقدار آیتم های انتخاب شده رو برای خصوصیت Language فراهم می کنه:
    Visual Basic


    Function LanguagesValue() As Languages
    Dim value% = 0
    For Each item As ListViewItem In Me.listView1.CheckedItems
    value += CInt(item.Tag)
    Next
    Return DirectCast(value, Languages)
    End Function

    C#‎‎‎‎‎‎‎‎‎‎


    Languages LanguagesValue ()
    {
    int value = 0;
    foreach (ListViewItem item in this.listView1.CheckedItems)
    {
    value += (int)item.Tag;
    }
    return (Languages)value;
    }


    که در رویداد ItemChecked از ListView این دستور بکار گرفته شده:
    Visual Basic


    Private Sub listView1_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles listView1.ItemChecked
    Me.Language = LanguagesValue()
    Me.Numberlabel.Text = CInt(Me.Language)
    Me.Nameslabel.Text = Me.Language.ToString
    End Sub

    C#‎‎‎‎‎‎‎‎‎‎


    private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
    {
    this.Language = LanguagesValue();
    this.Numberlabel.Text = ((int)this.Language).ToString();
    this.Nameslabel.Text = this.Language.ToString();
    }


    تا الآن یک مقدار داریم که عددی هست و می تونیم اون عدد رو ذخیره کنیم (که همون مقدار خصوصیت Language به عدد تبدیل بشه) می تونیم برای بازیابی آیتم های انتخاب شده از اون عدد استفاده کنیم:
    Visual Basic


    Private LanguageValue As Languages
    Public Property Language() As Languages
    Get
    Return LanguageValue
    End Get
    Set(ByVal value As Languages)
    LanguageValue = value
    End Set
    End Property

    C#‎‎‎‎‎‎‎‎‎‎


    public Languages Language { get; set; }


    برای ذخیره مقدار عددی از یک متغیر استفاه شده که دسترسی به اون در سطح ماجول هست:
    Visual Basic


    Dim SavedValue As Integer

    C#‎‎‎‎‎‎‎‎‎‎


    int SavedValue;


    برای مقدار دهی اون از یک کلید استفاده شده با این کد:
    Visual Basic


    Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
    Me.SavedValue = CInt(Me.Language)
    End Sub

    C#‎‎‎‎‎‎‎‎‎‎


    private void button1_Click(object sender, EventArgs e)
    {
    SavedValue = (int)this.Language;
    }


    و برای استفاده از مقدار ذخیره شده و فعال شدن مجدد آیتم های لیست طبق مقدار ذخیره شده از متود SetValue استفاده شده:
    Visual Basic


    Private Sub SetValue(value As Integer)
    Dim MemName As String
    For Each Item As ListViewItem In Me.listView1.Items
    MemName = [Enum].GetName(GetType(Languages), Item.Tag)
    Item.Checked = DirectCast(value, Languages).ToString.Contains(MemName)
    Next
    End Sub

    C#‎‎‎‎‎‎‎‎‎‎


    void SetValue(int value)
    {
    foreach (ListViewItem item in this.listView1.Items)
    {
    item.Checked = ((Languages)value).ToString().Contains(((Languages )item.Tag).ToString());
    }
    }


    با این روش می تونید یک تک مقدار عددی داشته باشید که برای ذخیره و بازیابی آیتم های انتحاب شده یک مجموعه از CheckBox استفاده کنید.(در دیتابیس یک فیلد از جدول)
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله ROSTAM2 : شنبه 03 دی 1401 در 21:37 عصر

تاپیک های مشابه

  1. سوال: آیا ممکنه بتونیم یک دستور از آیتمهای زیر مجموعه منوی یک برنامه دیگه رو اجرا کنیم؟
    نوشته شده توسط mbshareat در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: پنج شنبه 02 خرداد 1398, 20:39 عصر
  2. الگوریتم به دست آوردن زیر مجموعه های یک مجموعه
    نوشته شده توسط momal2008 در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 14
    آخرین پست: یک شنبه 27 مهر 1393, 00:11 صبح
  3. درخواست یه الگوریتم از نوع ژنتیکی! که با زیر مجموعه های یک مجموعه سر و کار داره.
    نوشته شده توسط aez_best در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 2
    آخرین پست: سه شنبه 03 آبان 1390, 21:50 عصر
  4. تحلیل الگوریتم ایجاد زیر مجموعه ای از یک مجموعه
    نوشته شده توسط fazel-d در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 5
    آخرین پست: سه شنبه 07 تیر 1390, 01:31 صبح
  5. الگوریتم بدست آوردن زیر مجموعه ها
    نوشته شده توسط marandi در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 4
    آخرین پست: پنج شنبه 11 فروردین 1384, 12:05 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •