PDA

View Full Version : سوال: دراپ دان multi select



fakhravari
دوشنبه 19 آذر 1397, 10:19 صبح
با سلام
من به یک دراپ دان multi select احتیاج دارم چطوری در win form این داشته باشم.
از کامپوننت نمیخواهم استفاده کنم

rahmatipoor
دوشنبه 19 آذر 1397, 19:11 عصر
سلام مشکل من هم هست

mrbm_2007
دوشنبه 19 آذر 1397, 20:31 عصر
خودت باید بنویسی
این یه نمونه ی آماده
https://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown

fakhravari
سه شنبه 20 آذر 1397, 07:14 صبح
سلام
از تولباکس اضاف کنید CheckBoxComboBox
using PresentationControls;using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


public class Status
{
public Status(int id, string name) { _Id = id; _Name = name; }


private int _Id;
private string _Name;


public int Id { get { return _Id; } set { _Id = value; } }
public string Name { get { return _Name; } set { _Name = value; } }


/// <summary>
/// Now used to return the Name.
/// </summary>
/// <returns></returns>
public override string ToString() { return Name; }
}


public class StatusList : List<Status>
{


}


private StatusList _StatusList = new StatusList();
private ListSelectionWrapper<Status> StatusSelections;


private void Form1_Load(object sender, EventArgs e)
{
var xx = new UploadCenterEntities();


var x = new List<Status>();
foreach (var y in xx.Role.ToList())
{
x.Add(new Status(y.Id, y.TitleFa));
}
_StatusList.AddRange(x);


StatusSelections = new ListSelectionWrapper<Status>(_StatusList, "Name");


checkBoxComboBox1.DataSource = StatusSelections;
checkBoxComboBox1.DisplayMemberSingleItem = "Name";
checkBoxComboBox1.DisplayMember = "NameConcatenated";
checkBoxComboBox1.ValueMember = "Selected";
}


private void button1_Click(object sender, EventArgs e)
{
var gg = new List<string>();


foreach (var t in checkBoxComboBox1.CheckBoxItems)
{
if (t.Checked)
{
ObjectSelectionWrapper<Status> v = (ObjectSelectionWrapper<Status>)t.ComboBoxItem;


gg.Add(v.Name + ":" + v.Item.Id);
}
}


MessageBox.Show(string.Join(",", gg));
}
}
}

NasimBamdad
سه شنبه 20 آذر 1397, 10:10 صبح
DevExpress , Telerik این کنترل رو دارند.

rahmatipoor
سه شنبه 20 آذر 1397, 10:41 صبح
با تشکر از دوستان عزیز


DevExpress , Telerik این کنترل رو دارند.

آقا محسن میشه لطف کنید و نحوه استفاده از این کنترل توی DevExprees رو بفرمائید.
نوع فیلد توی دیتابیس باید nvarchar باشه؟

NasimBamdad
سه شنبه 20 آذر 1397, 11:24 صبح
با تشکر از دوستان عزیز



آقا محسن میشه لطف کنید و نحوه استفاده از این کنترل توی DevExprees رو بفرمائید.
نوع فیلد توی دیتابیس باید nvarchar باشه؟

مهم نیست سمت دیتابیس چی باشه یه نمونه میذارم الان

rahmatipoor
سه شنبه 20 آذر 1397, 13:14 عصر
ممنون منتظرم

NasimBamdad
سه شنبه 20 آذر 1397, 23:35 عصر
مثل یک combobox باهاش رفتار کنید


db.SetCommand("Select * From pezeshk");
DataSet ds = db.GetData();
db.exec();


checkedComboBoxEdit1.Properties.DataSource = ds.Tables[0];
checkedComboBoxEdit1.Properties.ValueMember = "id";
checkedComboBoxEdit1.Properties.DisplayMember = "pezeshk_name";


اینطوری میشه آیتم های چک خورده رو ID شون رو گرفت و انداخت توی یک آرایه مثلا


string drID = checkedComboBoxEdit1.Properties.GetCheckedItems(). ToString();

string[] str = Regex.Split(drID, ", ");

rahmatipoor
چهارشنبه 21 آذر 1397, 07:53 صبح
ممنونم:لبخندساده: