# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > WPF >  كمبو باكس

## behroz1387

دوستان عزيز با سلام
اگه بخوام كه يك كمبو باكس كه اطلاعات خود را از پايگاه داده بگيرد چطوري بايد اقدام كنم 
و همچنين اگه بخوام وقتي روي يك دكمه كليك مي شه از برنامه خارج بشم بايد چكار كنم 
توي محيط wpf منظورمه 
ممنون از توجهتان

----------


## it4six

با سلام
برای پر کردن ComboBox باید از AddItem استفاده کنی که یکی از متد هایش هست . ولی می تونی زمان نیو کردن هم یه ایتم بهش بدی که می تونه از نوع object ارایه ای باشه . ولی با متد نمی تونی ارایه رو یکجا بهش بدی مگر با یه loop

برای کلیک شدن دکمه هم باید دکمه رو که نیو کردی .addActionListener(this) رو باهاش صدا بزنی و البته که از ActionListener هم باید impliment  کرده باشین
ولی توی متد actionPerformed که براتون جنریت می شه می تونی هنگام کلیک شدن اون رو مدیریت کنی .
اون wpf که گفتی رو هم نمی دونم .....
پیروز باشید.

----------


## behroz1387

دوست عزيز منظورم اين بود كه در پروپرتيز خاصيتي مانندdatabindins نداره كه بتوان اطلاعات را از ديتا بيس وارد كنم
ممنون

----------


## sunn789

از طریق wpf راههای زیادی وجود داره اگه فقط تنظیمات داخل فرم wpf رو میخوایی برات میزلرم اما بسته به اینکه بخوایی از کدوم تکنولوژی در به دست اوردن اطلاعات در قسمت کد نویس استفاده کنید مثلاً میتونی از DataSet و یا Linq استفاد کنی که بسیار ساده است کد wpf رو میزارم اگه خواستید کد C#‎ رو با Linq میزارم
<ComboBox Name="cmd_SearchType" Height="28" Width="120" Margin="10"
                              DisplayMemberPath="Name"/>

----------


## behroz1387

دوست گرامي مي خواهم از ديتا سيت استفاده كنم 
مننون مي شم اگه كمي سريعتر جوابمو بدي

----------


## sunn789

اول یه نمونه از Data set بساز 
private OrderDataSet OrderData = new OrderDataSet(); 
private CustomerLookupDataSet.CustomerDataTable CustomerLookup = new CustomerLookupDataSet.CustomerDataTable();
متغیر های بالا در خارج ازکلاسها .
و متغیر ها پایین رو در Window_Load
CustomerLookupDataSetTableAdapters.CustomerTableAd  apter taCustomer = new CustomerLookupDataSetTableAdapters.CustomerTableAd  apter();
            taCustomer.Fill(this.CustomerLookup);
this.ComboBox1.ItemsSource = this.CustomerLookup;
ComboBox نام همون ComboBox هست و به نظرم بقیه مشخصه اگه با به مشکل برخوردی د رخدمتیم

----------


## behroz1387

دوست گرامي با تشكر از زحمتتان
من كد را نوشتم كه در قسمت قرمز رنگ ارور مي ده كه Error    2    The type or namespace name 'CustomerLookupDataSet' could not be found (are you missing a using directive or an assembly reference?)    
اين هم كد نوشته شده
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication2
{


    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        private db2DataSet OrderData = new db2DataSet();
        private CustomerLookupDataSet.CustomerDataTable CustomerLookup = new CustomerLookupDataSet.CustomerDataTable();
        public Window1()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            CustomerLookupDataSetTableAdapters.CustomerTableAd  apter taCustomer = new CustomerLookupDataSetTableAdapters.CustomerTableAd  apter();
            taCustomer.Fill(this.CustomerLookup);
            this.ComboBox1.ItemsSource = this.CustomerLookup;
        }

    }
}

ممنون مي شم اگه كمك كنيد

----------


## sunn789

ایرادت از اینه که شمه به جای CustomerLookupDataSet باید نام دیتاستی که خودت ساختی بنویسی و بهد از نام دیتا ست نام جدولی که قراره اطلاعات کمبو باکس از آن خونده بشه
دیتا ست رو هم میتونی از گزینه AddNewItem و اضافه کردن دیتا ست به پروژه خودت اضافه کنی یعنی اینکه لازم هست یه دیتا ست در پروژت ساخته باشی

----------


## behroz1387

دوست عزيز با تشكر از توجهتان
كد را اصلاح كردم اما مشكل در اينجاست كه بجاي اطلاعات داخل كمبو باكس كل سطرها با عبارت system.data.datarow پر شده است
سوال دوم اينكه چطوري با وارد كردن اطلاعات در كمبو باكس تكست باكس از اطلاعات مربوط به ديتا بيس متناسب با كمبو باكس پر شود 
ممنون مي شم اگه جواب بديد

----------


## sunn789

در این مواقع دو تا راه حل داری یکی اینکه در تنظیمات کمبو باکس نوشته باشی 
DisplayMemberPath = "Name"
و دوم اینکه در Quary که به بانک اطلاعاتی میفرستی فقط همون ایتمی رو که میخوایی نوشته باشی مثلاً 
Select Name From tblUser
و توصیه اخر اینکه در این مواقع Linq راه حل ساده تری است
var ComboBoxItem = from c in db.tblUser select {c.Name}
که لازمه قبلش مانند DataSet یک Linq به پروژه اضافه کرده باشی و در بالای صفحه هم یه نمونه مثلاً در مثال بالا به اسم db بسازی
MasterLinq db = New MasterLinq;

----------

