how to create combobox onchange with programmatically - c#

basically, i create a combobox from toolbox and drag it into Form. but this time, i create a combobox with programmatically like this..
ComboBox filterKeyComboBox = new ComboBox() { Left = 100, Top = 22, Width = 150, DropDownStyle = ComboBoxStyle.DropDownList, DataSource = null };
then i fill it with this..
filterKeyComboBox.Items.Clear();
bs.DataSource = fieldTable;
filterKeyComboBox.DataSource = bs;
filterKeyComboBox.DisplayMember = "Value";
then i want to create eventhandler where every i change selected item from that combobox...
i tried like this..
filterAktifComboBox.SelectedIndexChanged += (sender, e) =>
{
Console.WriteLine("Test onchange selected item");
};
i dont know why, thats "Test onchange selected item" not printed in log.
how to create event item change in combobox with programmatically?

What exactly is "filterAktifComboBox" that you are giving the event?
Shouldn't you be doing it like this:
filterKeyComboBox.SelectedIndexChanged += (sender, e) =>
{
Console.WriteLine("Test onchange selected item");
};
Wich sets the event to
filterKeyComboBox

Related

how to change combobox (dropdownlist ) value with arrow key?

I have a combo box witch is DropDownList and i bind it to a property of a class. this Combo Box is populated with an array.
now in run time when i change selected item by mouse click every things sounds good. but when change item by arrow key any thing wont work. even textchanged event of combo box would not raise.
For ComboBoxit's really easy to use selected index changed event, instead of text changed event. It will fire by mouse or keyboard, when it changes the selection item of a ComboBox.
Example:
private void CB_Company_SelectedIndexChanged(object sender, EventArgs e)
{
if (CB_Company.SelectedItem.ToString() != "Select a company" & CB_Company.SelectedItem.ToString() != "")
{
CB_Company.BackColor = Color.White;
CB_Company.Enabled = false;
RB_Option1.Enabled = true;
RB_Option2.Enabled = true;
}
}
Populating combobox method:
private void SetDropDownItems()
{
List<DropDownModel> dropDownModel = new List<DropDownModel>();
dropDownModel.Add(new DropDownModel()
{
Name = "Select a company",
Value = ""
});
dropDownModel.Add(new DropDownModel()
{
Name = "My Company",
Value = "Comp"
});
CB_Company.DataSource = dropDownModel;
CB_Company.DisplayMember = "Name";
CB_Company.ValueMember = "Value";
}
I hope you get the idea.

two combobox firing an event for same function

There are two comboboxes. one is created by drag&drop and set event SelectedIndexChanged. And 2nd combobox is created manually, but not given any event. But when I change 2nd combo, it's firing an event for 1st combo's function.
Form prompt = new Form();
prompt.Width = 300;
prompt.Height = 150;
ComboBox cmBox = new ComboBox() { Left = 70, Top = 24, Width = 100, Height=150 };
cmBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
cmBox.ValueMember = "value";
cmBox.DisplayMember = "text";
prompt.ShowDialog();
I tried, but not working:
cmBox.SelectedIndexChanged -= new System.EventHandler(comboBox1_SelectedIndexChanged);
P.S: They are using same bindsource.
If they're sharing a BindingSource, then changing the value in one control will change the value in the other control as well.
When you change the value in the second ComboBox, the value in the first ComboBox changes too, which fires its SelectedIndexChanged event.
Create a separate BindingSource for each control, or if it's a collection, try just assigning the collection directly to each ComboBox.

Add content to listview in runtime

I'm looking for some help to add text to a listview with four columns. One way to add text to a listview is like this:
var item1 = new ListViewItem(new[] {"text1", "text2", "text3", "text4"});
lvRegAnimals.Items.Add(item1);
But I wonder how this would be done in runtime, when a user clicks a button to add new content to all the columns? I'm new to this and I preciate some help. Thanks!
Add your code to the button click event handler, some thing like this
void Btn_Click(Object sender,EventArgs e)
{
var item1 = new ListViewItem(new[] {"text1", "text2", "text3", "text4"});
lvRegAnimals.Items.Add(item1);
}

ComboBox data binding

I have a combobox control on form that pull its data (Displays and values) from some datasource. On another side I have table with one row. I want when app is lauching, combobox set selectedvalue or selecteditem to value of one column in above row. And when user has changed combobox it will persist change to row. I have tried to bind SelectedValue to this column, but it doesn't work. Combobox just sets on start to first item. What is problem?
EDIT
This is a Win Forms project.
Here is the binding code:
this.comboBoxCountries = new System.Windows.Forms.ComboBox();
this.countriesBindingSource = new System.Windows.Forms.BindingSource(this.components);
//
// comboBoxCountries
//
this.comboBoxCountries.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.searchCriteriaBindingSource, "Postcode", true));
this.comboBoxCountries.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.searchCriteriaBindingSource, "CountryCode", true));
this.comboBoxCountries.DataSource = this.countriesBindingSource;
this.comboBoxCountries.DisplayMember = "Name";
this.comboBoxCountries.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxCountries.FormattingEnabled = true;
this.comboBoxCountries.Location = new System.Drawing.Point(190, 19);
this.comboBoxCountries.Name = "comboBoxCountries";
this.comboBoxCountries.Size = new System.Drawing.Size(156, 21);
this.comboBoxCountries.TabIndex = 2;
this.comboBoxCountries.ValueMember = "Code";
this.comboBoxCountries.SelectedValueChanged += new System.EventHandler(this.comboBoxCountries_SelectedValueChanged);
//
// countriesBindingSource
//
this.countriesBindingSource.DataMember = "Countries";
this.countriesBindingSource.DataSource = this.dbDataSetCountries;
//
// dbDataSetCountries
//
this.dbDataSetCountries.DataSetName = "dbDataSetCountries";
this.dbDataSetCountries.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
//
// searchCriteriaBindingSource
//
this.searchCriteriaBindingSource.AllowNew = false;
this.searchCriteriaBindingSource.DataMember = "SearchCriteria";
this.searchCriteriaBindingSource.DataSource = this.dbDataSetSearchCriteria;
this.searchCriteriaBindingSource.BindingComplete += new System.Windows.Forms.BindingCompleteEventHandler(this.searchCriteriaBindingSource_BindingComplete);
//
// dbDataSetSearchCriteria
//
this.dbDataSetSearchCriteria.DataSetName = "dbDataSetSearchCriteria";
this.dbDataSetSearchCriteria.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
EDIT2
As I have mentioned in my comment below, I have another textbox that is binded to another DataMember of same binding source and textbox working fine. It's appear with appropriate value. When I change DataMember on same datamember on which I set selectedvalue property of combobox binding it's also show a good result and work properly.
Thanks in advance!
Take a look at the DisplayMember and ValueMember properties of the combobox. You need to tell the ComboBox what member from the datasource to display in the drop down, and what value to give when SelectedValue is requested.
It sounds like your ComboBox is bound to a static list while your rows are not. You might consider using a BindingSource that you set the ComboBox and the DataGridView's DataSource to. That way when the DGV navigates to a new row, the ComboBox will be updated with the value for the new row.
Here is a link to the ComboBox on MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.aspx
I find it out. So for managing with this issue you should remove SelectedValue databinding from visual studio data bound menu and put an appropriate code to add this databinding in some place after filling all bindingsources:
private void MainForm_Load_1(object sender, EventArgs e)
{
this.searchCriteriaTableAdapter1.Fill(this.dbDataSetCountries.SearchCriteria);
this.searchCriteriaTableAdapter.Fill(this.dbDataSetSearchCriteria.SearchCriteria);
comboBoxCountries.DataBindings.Add("SelectedValue", this.dbDataSetCountries.SearchCriteria, "CountryCode");
}

how to dropdown combobox automatically in datagridview

how to automatically show dropdown items when users click on a comboBoxCell in datagridview?
You can set the combo box's GotFocus event, but you'll have to get the combo box instance handle and with it you can do:
myComboBox.GotFocus += (s, e) => ((ComboBox)s).DroppedDown = true;

Categories