ListView - Details View: Does 'this' belong to 'this'? - c#

In Details View for the ListView Control, how can I do something like this, in the simplest way?
if(listView1.SelectedItem belongs to listView1.Groups["BaseballGroup"])
{
MessageBox.Show("The selected item is inside the Baseball Group");
}

Actually there's no property SelectedItem but a list of SelectedItems, then:
if(listView1.SelectedItems[0].Group == listView1.Groups["BaseballGroup"])
{
//...
}
N.B.
Check if something is selected (SelectedItems.Count > 0) to do SelectedItems[0] safely.

Perhaps you could try
listView1.Groups["BaseballGroup"].Contains(listView1.SelectedItem.ToString())

Related

c# Is there a option to filter a listbox

I want to know if there is a possibility to filter a listbox. I mean it in such a way that is i add an item and the name is already in the listbox that you get a messagebox.show that tells you"Item already in the listbox". And that it won't be added twice.
You don't need to iterate throug the items as the Items collection of the ListBox implements the "Contains" method.
if (listBox1.Items.Contains(Item))
{
MessageBox.Show("ListBox already contains Item");
}
"Item" is in this case the Item from the other ListBox
Update. You could write:
if (listBox1.Items.Contains(listBox2.SelectedItem))
{
MessageBox.Show("ListBox already contains Item");
}
else
{
listBox1.Items.Add(listBox2.SelectedItem);
}
Use data binding might be one of the solutions:
List<string> SomeData=...
var filtered=SomeData.Where(...); // <-- Your filtering condition here
listBox1.DataSource = new BindingSource(choices, null);
Inside the event/method which adds list items inside your listbox you can add something like:
// search for list item in the listbox which has the text
ListItem li = theListBox.Items.FindByText("yourListItemName");
if (li != null)
{
// if list item exists display message
MessageBox.Show("ListBox already contains item with the name");
}
else
{
theListBox.Items.Add("yourListItemName");
}
here is a sample code try and implement it in you code
ListBox.ObjectCollection ListItem1= ListBox1.Items;
if(!string.IsNullOrEmpty(SearchBox.Text))
{
foreach (string str in ListItem1)
{
if (str.Contains(SearchBox.Text))
{
msgbox;
}
}
}

How to find out if a ComboBox contains any items?

I have simple WinForms application in C# which has two controls: combobox1 and button. I would like to find out if there are any items in combobox1.
I have tried this, but it only tells me if there is a selected item:
if (combobox1.Text != ""))
{
MessageBox.Show("Combo is not empty");
}
Double click on your button in the Form and insert this code inside the click event handler : `
//this code should work
if (comboBox1.Items.Count == 0)
{
MessageBox.Show("Your combo is empty");
}
`
I use
if (comboBox1.SelectedItem!=null)
{
MessageBox.Show("Combo is not empty");
}
to determine if something is selected
And I use this to determine if the comboBox has any items.
if (comboBox1.Items.Count > 0)
{
MessageBox.Show("Your combo is not empty");
}
If no item selected/Present, then SelectedIndex property returns -1.
if (combobox1.SelectedIndex == -1)
//no item selected/present
Well, I am sure if you check out ComboBox class on MSDN: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox_properties, it'd benefit you.
Also, personally I wouldn't tend to use selectedIndex or selectedItem property, as there can be a case where item collection is not empty but none of any items are actually selected. Use items.count is a better way to decide if item collection is empty or not.
if (ComboBox.Items!=null && ComboBox.Items.Count>0)
{
//have some item
}
and if you need to know how many item have Use
string Count = ComboBox.Items.Count;

What is the correct way to change selection of a DropDownList?

I am having a problem to change a selected item in a drop-down.
The way I use is (a property in the code behind which sets the new selection):
public char Candy
{
set
{
var newSelection = ddlCandy.Items.FindByValue(value.ToString());
ddlCandy.ClearSelection();
newSelection.Selected = true;
}
}
Is this a recommended and proper way?
recommended approach is to simply assign the SelectedValue property with the Value you have and the DropDownList control will find and select the proper item for you, if any.
Safe way is fist Find the given item from DropDownList and set it as SelectedValue
ListItem oListItem = DropDownList1.Items.FindByValue("yourValue");
if(oListItem != null)
{
DropDownList1.SelectedValue = oListItem.Value;
}
if you directly assign SelectedValue it may through an exception if it is not exist in the list like bellow.
'DropDownList' has a SelectedValue which is invalid because it does
not exist in the list of items.
I usually prefer to use SelectedValue:
DropDownList1.SelectedValue = "Foo";

how to check if item is selected from a comboBox in C#

I'm pretty new here.
I have a form, and want to check if the user filled it in correctly. In the form there's a combo box; how can I build the "if" statement for checking whether the user picked an item from it ?
P.S. Sorry for my bad English, it's not my mother tongue. :)
Use:
if(comboBox.SelectedIndex > -1) //somthing was selected
To get the selected item you do:
Item m = comboBox.Items[comboBox.SelectedIndex];
As Matthew correctly states, to get the selected item you could also do
Item m = comboBox.SelectedItem;
Here is the perfect coding which checks whether the Combo Box Item is Selected or not
if (string.IsNullOrEmpty(comboBox1.Text))
{
MessageBox.Show("No Item is Selected");
}
else
{
MessageBox.Show("Item Selected is:" + comboBox1.Text);
}
You seem to be using Windows Forms. Look at the SelectedIndex or SelectedItem properties.
if (this.combo1.SelectedItem == MY_OBJECT)
{
// do stuff
}
if (comboBox1.SelectedIndex == -1)
{
//Done
}
It Works,, Try it
if (combo1.SelectedIndex > -1)
{
// do something
}
if any item is selected selected index will be greater than -1
You can try
if(combo1.Text == "")
{
}
I've found that using this null comparison works well:
if (Combobox.SelectedItem != null){
//Do something
}
else{
MessageBox.show("Please select a item");
}
This will only accept the selected item and no other value which may have been entered manually by the user which could cause validation issues.

Setting default item in combo box

I have a function for setting items in a combobox and one item is to be set by default like
--SELECT LIST--
public void SetOperationDropDown()
{
int? cbSelectedValue = null;
if(cmbOperations.Items.Count == 0)
{
//This is for adding four operations with value in operation dropdown
cmbOperations.Items.Insert(0, "PrimaryKeyTables");
cmbOperations.Items.Insert(1, "NonPrimaryKeyTables");
cmbOperations.Items.Insert(2, "ForeignKeyTables");
cmbOperations.Items.Insert(3, "NonForeignKeyTables");
cmbOperations.Items.Insert(4, "UPPERCASEDTables");
cmbOperations.Items.Insert(5, "lowercasedtables");
//ByDefault the selected text in the cmbOperations will be -SELECT OPERATIONS-.
cmbOperations.Text = "-SELECT OPERATIONS-";
}
else
{
if(!string.IsNullOrEmpty("cmbOperations.SelectedValue"))
{
cbSelectedValue = Convert.ToInt32(cmbOperations.SelectedValue);
}
}
//Load the combo box cmbOperations again
if(cbSelectedValue != null)
{
cmbOperations.SelectedValue = cbSelectedValue.ToString();
}
}
Can anyone suggest a way to do this?
I've rewritten this answer to clarify some stuff.
First, the "default" text must be added as combo item as well.
Usage of combo.Text property just adds descriptive text to combobox which is "lost" first time user do something with a control.
If you like to permanently have "default" text in your combo, you must add it as an combobox item.
By the code you provided, just modify the
cmbOperations.Text = "-SELECT OPERATIONS-"; to
cmbOperations.Items.Insert(0, "-SELECT OPERATIONS-");
Note that this way you add the item "-SELECT OPERANDS-" to the 0th (read first) position in the list.
Also make sure that all your following items are increased by 1, because they are now moved by one space down in list.
Finally, put cboOperations.SelectedIndex = 0; line at the end of code. By doing so, you're telling combobox to display your "default" item initially when the form (or control) loads.
One more thing. I'm not pretty sure what do you want to achieve with the code beyond setting combo items, but if you like to check what user selected use cboOperations.SelectedIndex property which contains currently selected item in combo. You can add simple if(cboOperations.SelectedIndex == someIntValue){...}
The rest is your program logic ;)

Categories