private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e) { cbx0.Visible = false; cbx1.Visible = false; cbx2.Visible = false; System.Windows.Forms.ComboBox cbx = null; if (dataGrid1.CurrentCell.ColumnNumber == 0) { cbx = cbx0; } if (dataGrid1.CurrentCell.ColumnNumber == 1) { cbx = cbx1; } if (dataGrid1.CurrentCell.ColumnNumber == 2) { cbx = cbx2; } if (cbx != null) { System.Drawing.Rectangle rc = dataGrid1.GetCurrentCellBounds(); cbx.SetBounds(rc.Left, rc.Top, rc.Width, rc.Height); cbx.SelectedIndex = -1; if (dataGrid1.CurrentCell.RowNumber < ds.Tables[0].Rows.Count) { if (dataGrid1.CurrentCell.ColumnNumber < ds.Tables[0].Columns.Count) { cbx.Text = ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][dataGrid1.CurrentCell.ColumnNumber].ToString(); } } SetDropdownWidth(cbx); cbx.Visible = true; cbx.BringToFront(); } }
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e) { if (dataGrid1.CurrentCell.RowNumber >= 0) { if (dataGrid1.CurrentCell.ColumnNumber == 1) { System.Drawing.Rectangle rc = dataGrid1.GetCurrentCellBounds(); cbx2.SetBounds(rc.Left, rc.Top, rc.Width, rc.Height); cbx2.SelectedIndex = -1; if (dataGrid1.CurrentCell.RowNumber < ds.Tables[0].Rows.Count) { string s = ds.Tables[0].Rows[dataGrid1.CurrentCell.RowNumber][dataGrid1.CurrentCell.ColumnNumber].ToString(); for (int i = 0; i < cbx2.Items.Count; i++) { if (cbx2.Items[i].ToString() == s) { cbx2.SelectedIndex = i; break; } } } cbx2.Visible = true; cbx2.BringToFront(); } } }
private void FormRegister_Load(object sender, EventArgs e) { // Clear the input fields ClearInputFields(this); // Place the option buttons in a line along the // top of the form, right justified. PositionOptionButtons(); // Co-locate the City combobox and // its associated text box. textCity.Bounds = cboxCity.Bounds; // Add the "(new Entry)" item at to top of the list. // Select it. // Show the ComboBox cboxCity.Items.Insert(0, "(new Entry)"); cboxCity.SelectedIndex = 0; cboxCity.BringToFront(); // Default to an Adult entry. this.optAdult.Checked = true; }
private void CreateManualFileEntryControl(object sender, EventArgs e) { if (_fileCombo != null &&_fileCombo.Visible) { _fileCombo.Visible = false; Controls.Remove(_fileCombo); return; } string currentDirectory; if (BreadCrumbTrail.Items.Count > 2) currentDirectory = (string)BreadCrumbTrail.Items[BreadCrumbTrail.Items.Count - 1].Tag; else if (_overflowStack.Any()) currentDirectory = (string) _overflowStack.Peek().Tag; else currentDirectory = string.Empty; _fileCombo = new ComboBox { Text = currentDirectory, Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right, Width = BreadCrumbTrail.Width - BreadCrumbTrail.Items[0].Width + HistoryButton.Width-1, Location = new Point(BreadCrumbTrail.Items[0].Width,0), FlatStyle = FlatStyle.Flat, AutoCompleteMode = AutoCompleteMode.SuggestAppend, AutoCompleteSource = AutoCompleteSource.FileSystemDirectories }; _fileCombo.Items.Add(currentDirectory); var history = FolderHistoryInterface.GetRecentFolders(); foreach (var item in history.Where(item => !string.IsNullOrEmpty(item) && item != currentDirectory)) _fileCombo.Items.Add(item); _fileCombo.KeyDown += (x, y) => { if (y.KeyCode == Keys.Return) { y.Handled = true; if (Directory.Exists(_fileCombo.Text)) { _fileCombo.Visible = false; Controls.Remove(_fileCombo); Navigate(_fileCombo.Text.TrimEnd('\\'), null); } else MessageBox.Show("Directory does not exist"); } else if (y.KeyCode == Keys.Escape) { _fileCombo.Visible = false; Controls.Remove(_fileCombo); return; } }; Controls.Add(_fileCombo); _fileCombo.Select(); _fileCombo.SelectionStart = _fileCombo.Text.Length; if (sender == HistoryButton) _fileCombo.DroppedDown = true; _fileCombo.BringToFront(); }
/// <summary> /// /// </summary> /// <param name="lv"></param> /// <param name="lst"></param> /// <param name="x">鼠标的x坐标</param> /// <param name="y">鼠标的y坐标</param> /// <param name="col">ComboBox显示在哪个列上</param> /// <param name="defaultValueCol">ComboBox的默认值列</param> private static void ShowCombobox(ListView lv, ComboBox lst, int x, int y, int col, int defaultValueCol) { var item = lv.GetItemAt(x, y); if (item == null || !item.Checked) return; comboboxItem = item; int lWidth = 0, rWidth = 0; for (int i = 0; i <= col; i++) { int tmp = lv.Columns[i].Width; if (i < col) lWidth += tmp; rWidth += tmp; } if (x > rWidth || x < lWidth) { lst.Visible = false; return; } //获取所在位置的行的Bounds Rectangle rect = item.Bounds; //修改Rect的范围使其与第二列的单元格的大小相同,为了好看 ,左边缩进了2个单位 rect.X += lv.Left + lWidth + 2; rect.Y += lv.Top + 2; rect.Width = rWidth - lWidth; lst.Bounds = rect; string val = item.SubItems[col].Text; if (string.IsNullOrEmpty(val) && defaultValueCol >= 0 && item.SubItems.Count > defaultValueCol) val = item.SubItems[defaultValueCol].Text; lst.Text = val; lst.Visible = true; lst.BringToFront(); lst.Focus(); lst.Name = col.ToString(); //lst.SelectedIndexChanged -= lstSelectedIndexChanged;// (obj, args) => { MessageBox.Show("1"); }; }
//Adding all male apparels information into their respective category(tabPage) private void AddMaleApparels() { foreach (TabPage tp in MCatalogue.TabPages) { tp.BackColor = Color.White; FlowLayoutPanel flp = new FlowLayoutPanel(); flp.Dock = DockStyle.Fill; flp.AutoScroll = true; flp.VerticalScroll.Visible = true; flp.BackColor = Color.White; foreach (Apparel apparel in store.Apparels) { if (apparel.Gender == 'M' && MCatalogue.TabPages.IndexOf(tp) == (apparel.Category.CategoryID - 1)) { //Panel for each product Panel panel = new Panel(); panel.Size = new Size(170, 270); panel.BackColor = Color.White; panel.BorderStyle = BorderStyle.FixedSingle; //PictureBox for each product's image PictureBox pb = new PictureBox(); pb.Location = new Point(9, 0); pb.Size = new Size(150, 150); pb.ImageLocation = "images/" + apparel.ImagePath; pb.SizeMode = PictureBoxSizeMode.StretchImage; //Label for the product's Description Label productDescriptionLabel = new Label(); productDescriptionLabel.Location = new Point(0, 140); productDescriptionLabel.Size = new Size(170, 40); productDescriptionLabel.BackColor = Color.Transparent; productDescriptionLabel.Text = apparel.Description; productDescriptionLabel.TextAlign = ContentAlignment.MiddleLeft; productDescriptionLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); //Label for the product's price Label priceLabel = new Label(); priceLabel.Location = new Point(0, 180); priceLabel.Size = new Size(170, 22); priceLabel.BackColor = Color.Transparent; productDescriptionLabel.TextAlign = ContentAlignment.MiddleLeft; priceLabel.Text = "Price: " + apparel.Price.ToString("C", CultureInfo.CreateSpecificCulture("en-US")); priceLabel.Font = new System.Drawing.Font("Arial", 8.4F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); //Label to display text "Size: " Label sizeLabel = new Label(); sizeLabel.Location = new Point(0, 207); sizeLabel.Size = new Size(41, 16); sizeLabel.BackColor = Color.Transparent; sizeLabel.Text = "Size:"; sizeLabel.Font = new System.Drawing.Font("Arial", 8.4F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); sizeLabel.SendToBack(); //ComboxBox for user to select the size of the apparel ComboBox sizeSelector = new ComboBox(); sizeSelector.Location = new Point(41, 205); sizeSelector.Size = new Size(50, 80); sizeSelector.Text = "size"; string[] possibleSize = { "XS", "S", "M", "L", "XL" }; foreach (string size in possibleSize) { sizeSelector.Items.Add(size); } sizeSelector.SelectedValueChanged += UpdateProductSize; sizeSelector.Tag = apparel; sizeSelector.BringToFront(); //Label to display the text "Quantity: " Label quantityLabel = new Label(); quantityLabel.Location = new Point(90, 207); quantityLabel.Size = new Size(35, 16); quantityLabel.BackColor = Color.Transparent; quantityLabel.Text = "Qty:"; quantityLabel.Font = new System.Drawing.Font("Arial", 8.4F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); quantityLabel.SendToBack(); //NumericUpDown for user to select the quantity of the apparel NumericUpDown quantitySelector = new NumericUpDown(); quantitySelector.Location = new Point(125, 205); quantitySelector.Size = new Size(40, 30); quantitySelector.TextAlign = HorizontalAlignment.Right; quantitySelector.ReadOnly = true; quantitySelector.Maximum = 5; quantitySelector.Minimum = 0; quantitySelector.ValueChanged += UpdateProductQuantity; quantitySelector.Tag = apparel; quantitySelector.BringToFront(); //Button for adding the product into the cart Button b = new Button(); b.Location = new Point(19, 235); b.Size = new Size(130, 30); b.BackColor = System.Drawing.Color.Transparent; b.FlatStyle = FlatStyle.Flat; b.FlatAppearance.BorderColor = Color.Black; b.FlatAppearance.BorderSize = 2; b.Text = "Add to cart"; b.Font = new System.Drawing.Font("Arial", 8.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); b.MouseEnter += MouseHoverButton; b.MouseLeave += MouseLeaveButton; b.MouseDown += MouseDownButton; b.Click += AddToCart; b.Tag = apparel; panel.Controls.Add(pb); panel.Controls.Add(productDescriptionLabel); panel.Controls.Add(priceLabel); panel.Controls.Add(sizeLabel); panel.Controls.Add(sizeSelector); panel.Controls.Add(quantityLabel); panel.Controls.Add(quantitySelector); panel.Controls.Add(b); flp.Controls.Add(panel); } } tp.Controls.Add(flp); } }
/// <summary> /// Creates and initializes UI. /// </summary> private void InitUI() { this.ClientSize = new Size(400,450); this.Text = "RTP debug"; //this.Icon = ; TODO: this.FormClosing += new FormClosingEventHandler(wfrm_RTP_Debug_FormClosing); m_pTab = new TabControl(); m_pTab.Dock = DockStyle.Fill; m_pTab.TabPages.Add("participants","Participants"); m_pParticipantsSplitter = new SplitContainer(); m_pParticipantsSplitter.Dock = DockStyle.Fill; m_pParticipantsSplitter.Orientation = Orientation.Vertical; m_pParticipantsSplitter.SplitterDistance = 60; m_pTab.TabPages["participants"].Controls.Add(m_pParticipantsSplitter); m_pParticipants = new TreeView(); m_pParticipants.Dock = DockStyle.Fill; m_pParticipants.BorderStyle = BorderStyle.None; m_pParticipants.FullRowSelect = true; m_pParticipants.HideSelection = false; m_pParticipants.AfterSelect += new TreeViewEventHandler(m_pParticipants_AfterSelect); m_pParticipantsSplitter.Panel1.Controls.Add(m_pParticipants); m_pParticipantData = new PropertyGrid(); m_pParticipantData.Dock = DockStyle.Fill; m_pParticipantsSplitter.Panel2.Controls.Add(m_pParticipantData); m_pTab.TabPages.Add("global_statistics","Global statistics"); m_pGlobalSessionInfo = new PropertyGrid(); m_pGlobalSessionInfo.Dock = DockStyle.Fill; m_pTab.TabPages["global_statistics"].Controls.Add(m_pGlobalSessionInfo); m_pSessions = new ComboBox(); m_pSessions.Size = new Size(200,20); m_pSessions.Location = new Point(100,2); m_pSessions.DropDownStyle = ComboBoxStyle.DropDownList; m_pSessions.SelectedIndexChanged += new EventHandler(m_pSessions_SelectedIndexChanged); m_pTab.TabPages["global_statistics"].Controls.Add(m_pSessions); m_pSessions.BringToFront(); m_pTab.TabPages.Add("errors","Errors"); m_pErrors = new ListView(); m_pErrors.Dock = DockStyle.Fill; m_pErrors.View = View.Details; m_pErrors.FullRowSelect = true; m_pErrors.HideSelection = false; m_pErrors.Columns.Add("Message",300); m_pErrors.DoubleClick += new EventHandler(m_pErrors_DoubleClick); m_pTab.TabPages["errors"].Controls.Add(m_pErrors); this.Controls.Add(m_pTab); }
public FormDownloads() { // // Required for Windows Form Designer support // InitializeComponent(); Initialize(); // // TODO: Add any constructor code after InitializeComponent call // try { this.tabControlFilter.Appearance = Crownwood.Magic.Controls.TabControl.VisualAppearance.MultiBox; this.tabControlDetails.Appearance = Crownwood.Magic.Controls.TabControl.VisualAppearance.MultiBox; this.tabControlDetails.PositionTop = true; eLePhantButton1_Click(this,null); m_selectedTabControlDetails = 0; this.contextMenuFilter.Popup+=new EventHandler(contextMenuFilter_Popup); menuItemShowCount.Click+=new EventHandler(menuItemShowCount_Click); menuItemShowTotalSizes.Click+=new EventHandler(menuItemShowTotalSizes_Click); menuItemAutoSort.Click+=new EventHandler(menuItemAutoSort_Click); this.downloadList.ContextMenuDownloads.MenuItems[13].Click+=new EventHandler(downloadList_DoubleClick); m_DetailsSize=0; //if view categories in a listBox comboBoxCategories=new ComboBox(); this.panel7.Controls.Add(this.comboBoxCategories); //comboBoxCategories.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); comboBoxCategories.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left))); comboBoxCategories.DropDownStyle=ComboBoxStyle.DropDownList; comboBoxCategories.Size = new System.Drawing.Size(100, 21); //comboBoxCategories.Location = new System.Drawing.Point(buttonAddeLink.Left-5-comboBoxCategories.Width, 2); comboBoxCategories.Location = new System.Drawing.Point(this.label1.Right+5, 2); this.tabControlFilter.Left+=comboBoxCategories.Width; comboBoxCategories.Name = "comboBoxCategories"; comboBoxCategories.TabIndex =4; comboBoxCategories.BringToFront(); tabControlFilter.Width-=comboBoxCategories.Width+5; comboBoxCategories.SelectedIndexChanged += new System.EventHandler(comboBoxCategories_SelectedIndexChanged); comboBoxCategories.ContextMenu=contextMenuFilter; label1.ContextMenu=contextMenuFilter; //end if contextMenuFilter.MenuItems.Add("-"); manageCategories=new MenuItem("Manage categories..."); manageCategories.Click+=new EventHandler(manageCategories_Click); contextMenuFilter.MenuItems.Add(manageCategories); m_Globalize(); } catch(Exception e) { Debug.WriteLine(e.ToString()); } }
public override void InitializeBinding(MapObjectHolder target) { this.target = target; if (target.GetParent().GetParent().GetType() != typeof(layerObj)) { this.Enabled = false; return; } layerObj layer = target.GetParent().GetParent(); styleObj style = target; if (itemList == null) { itemList = new ComboBox(); itemList.Width = targetControl.Width; itemList.Height = targetControl.Height; itemList.Location = targetControl.Location; itemList.DropDownStyle = ComboBoxStyle.DropDownList; itemList.SelectedIndexChanged += new EventHandler(itemList_SelectedIndexChanged); targetControl.Parent.Controls.Add(itemList); itemList.BringToFront(); Bitmap bmp = Resources.DataConnection; bmp.MakeTransparent(Color.Magenta); pbox = new PictureBox(); pbox.Image = bmp; pbox.SizeMode = PictureBoxSizeMode.AutoSize; pbox.Location = new System.Drawing.Point(targetControl.Location.X + targetControl.Width + 2, targetControl.Location.Y + (targetControl.Height - pbox.Image.Height) / 2); targetControl.Parent.Controls.Add(pbox); pbox.BringToFront(); } BindingState = false; itemList.Items.Clear(); layer.open(); for (int i = 0; i < layer.numitems; i++) itemList.Items.Add(layer.getItem(i)); if (layer.getResults() == null) layer.close(); // close only is no query results if (layer.connectiontype == MS_CONNECTION_TYPE.MS_OGR) { itemList.Items.Add("OGR:LabelFont"); itemList.Items.Add("OGR:LabelSize"); itemList.Items.Add("OGR:LabelText"); itemList.Items.Add("OGR:LabelAngle"); itemList.Items.Add("OGR:LabelFColor"); itemList.Items.Add("OGR:LabelBColor"); itemList.Items.Add("OGR:LabelPlacement"); itemList.Items.Add("OGR:LabelAnchor"); itemList.Items.Add("OGR:LabelDx"); itemList.Items.Add("OGR:LabelDy"); itemList.Items.Add("OGR:LabelPerp"); itemList.Items.Add("OGR:LabelBold"); itemList.Items.Add("OGR:LabelItalic"); itemList.Items.Add("OGR:LabelUnderline"); itemList.Items.Add("OGR:LabelPriority"); itemList.Items.Add("OGR:LabelStrikeout"); itemList.Items.Add("OGR:LabelStretch"); itemList.Items.Add("OGR:LabelAdjHor"); itemList.Items.Add("OGR:LabelAdjVert"); itemList.Items.Add("OGR:LabelHColor"); itemList.Items.Add("OGR:LabelOColor"); } string binding = style.getBinding((int)styleBinding); if (binding != null) { itemList.SelectedItem = binding; BindingState = true; } else { if (itemList.Items.Count > 0) itemList.SelectedIndex = 0; } }
/// <summary> /// 单击查询窗体datagridview /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SearchDgv_Click(object sender, EventArgs e) { //string sqlstatus = "SELECT NAME FROM SPFLOWSTATUS_TAB where id not in (6,8,9,15) ORDER BY ID"; string sqlstatus = "SELECT NAME FROM SP_FLOWSTATUS_TAB ORDER BY ID"; if (table_name == "SP_SPOOL_TAB" || table_name == "FLOWLOG_VIEW") { ComboBox cb = new ComboBox(); foreach( DataGridViewRow dr in this.SearchDgv.Rows ) { if(dr.Cells[4].Selected == true) { int id = dr.Index; if(dr.Cells[0].Value.ToString() == "FLOWSTATUS") { Rectangle rec = this.SearchDgv.GetCellDisplayRectangle(4, id, true); cb.SetBounds(rec.Location.X, rec.Location.Y, rec.Width, rec.Height); this.SearchDgv.Controls.Add(cb); cb.Items.Add(string.Empty); DetailInfo.Application_Code.FillComboBox.GetFlowStatus(cb,sqlstatus); cb.BringToFront(); cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged); } else { foreach (Control combo in this.SearchDgv.Controls) { if (combo is ComboBox) { combo.Dispose(); } } } } } } }
protected override void DoBuildChildren(LayoutPanelBase Layout) { base.DoBuildChildren (Layout); CaptionLabel.Dock = DockStyle.Top; mode = new ComboBox (); mode.Parent = ParentNotePanel; mode.DropDownStyle = ComboBoxStyle.DropDownList; mode.Dock = DockStyle.Top; mode.BringToFront (); mode.Items.Add (Loc.Instance.GetString ("Notes on This Layout")); mode.Items.Add (Loc.Instance.GetString ("All Layouts")); mode.Items.Add (Loc.Instance.GetString ("Notes on Current Layout")); mode.SelectedIndexChanged += HandleDropDownSelectedIndexChanged; SearchDetails = new Panel (); AdjustDockingOfSearchPanel(); CurrentFilterDropDown = new ComboBox (); CurrentFilterDropDown.Dock = DockStyle.Bottom; // because we need the tables to be loaded we CANNOT load this data now LayoutDetails.Instance.UpdateAfterLoadList.Add (this); TextEditor = new ComboBox (); TextEditor.Dock = DockStyle.Bottom; TextEditor.KeyPress += HandleTextEditKeyPress; TextEditor.KeyUp += HandleKeyUp; // Do some cleanup on history item to keep the list reasonable. // This happens only on load to keep things simple if (History.Count > 10) { History.RemoveRange(9, (History.Count)-9); } foreach (string s in History) { TextEditor.Items.Add (s); } TextEditor.SelectedIndexChanged+= (object sender, EventArgs e) => Refresh ();; FullTextSearch = new CheckBox(); FullTextSearch.Checked = false; FullTextSearch.Text = Loc.Instance.GetString ("Search All Text Fields"); FullTextSearch.Dock = DockStyle.Bottom; SearchDetails.Controls.Add (TextEditor); SearchDetails.Controls.Add (CurrentFilterDropDown); SearchDetails.Controls.Add (FullTextSearch); list = new ListBox(); //list.SelectedIndexChanged += HandleDropDownSelectedIndexChanged; list.Parent = ParentNotePanel; list.Width = 125; list.Dock = DockStyle.Fill; list.BringToFront(); list.BindingContextChanged+= HandleBindingContextChanged; list.DoubleClick += HandleListBoxDoubleClick; list.Click+= HandleNoteListClick; ParentNotePanel.Controls.Add (SearchDetails); count = new Label(); count.Parent = ParentNotePanel; count.Dock = DockStyle.Bottom; blurb = new Label(); blurb.Parent = ParentNotePanel; blurb.Dock = DockStyle.Bottom; refresh = new Button(); refresh.Text = Loc.Instance.GetString("Refresh"); refresh.Dock = DockStyle.Bottom; refresh.Parent = ParentNotePanel; refresh.Click += HandleRefreshClick; //Menu Stuff TokenItem = new ToolStripMenuItem(Loc.Instance.GetString("Dock on Bottom?")); TokenItem.CheckOnClick = true; TokenItem.Click += (object sender, EventArgs e) => { searchDetailsDock = (sender as ToolStripMenuItem).Checked; AdjustDockingOfSearchPanel(); this.SetSaveRequired(true); }; if (searchDetailsDock) TokenItem.Checked = true; else TokenItem.Checked= false; properties.DropDownItems.Add (new ToolStripSeparator()); properties.DropDownItems.Add (TokenItem); // AdjustHeightOfLayoutSearchPanel (); This already gets called when the note type is chosen }
private void AddMidpoint(SolarSystem systemToAdd) { //Get a count of all the ComboBox's in the panel int controlCount = 0; foreach (Control cont in pnlMidpoints.Controls) if (cont.GetType() == typeof(ComboBox)) controlCount++; //Configure the textbox to be similar to the start / end desto properties ComboBox newTextBox = new ComboBox(); pnlMidpoints.Controls.Add(newTextBox); newTextBox.ValueMember = "SolarSystemID"; newTextBox.DisplayMember = "SolarSystemName"; newTextBox.DropDownStyle = ComboBoxStyle.Simple; newTextBox.Tag = controlCount + 1; if (systemToAdd.SolarSystemName != null) { //If the system parsed is a legit system, set the combo box's text and selected item to the parsed system newTextBox.Text = systemToAdd.SolarSystemName; newTextBox.Items.Add(systemToAdd); newTextBox.SelectedItem = systemToAdd; } //We dont store each individual solar system, so when they select an item from the dropdown, just close it backup. newTextBox.SelectedIndexChanged += (object o, EventArgs e) => { newTextBox.Size = new Size(newTextBox.Size.Width, 23); }; //When the textbox text is updated, behave EXACTLY like the static start / desto boxes newTextBox.TextUpdate += (object o, EventArgs e) => { newTextBox.Items.Clear(); //Get the containers current sizes Size contSize = newTextBox.Size; string userText = newTextBox.Text; //If the user has entered 3 or more chars, lets do a lookup. If its less... Ignore it, we dont want to search this vague if (userText.Length >= 3) { //Get all systems that are similar to the entered values IEnumerable<SolarSystem> systems = _dataRepository.GetSolarSystemsLikeName(userText); if (systems.Count() > 0) { newTextBox.Items.AddRange(systems.ToArray()); //New items were added, so we want to display the drop down so they can select one. They MUST select one. newTextBox.DropDownStyle = ComboBoxStyle.Simple; //Height of the drop down is either 121 if the list height exceedes 121, with a height of 21 for each item. If less, the drop down is equal to minimum height for the items. int height = ((systems.Count() * 21) > 100) ? 121 : ((systems.Count() * 21) + 21); //Re-size the combo back to standard if less than 3 values entered. This is because they might exceed 3, then backspace. newTextBox.Size = new Size(contSize.Width, height); newTextBox.BringToFront(); } else //If there are no systems, hide the drop down (Even if its not shown) newTextBox.Size = new Size(contSize.Width, 21); } else { //If there are no systems, hide the drop down (Even if its not shown) newTextBox.Size = new Size(contSize.Width, 21); } //Highlight the whole combobox, and put the cursor at the end newTextBox.Select(newTextBox.Text.Length, 0); //Bring the dropdown to the front so nothing obstructs it. newTextBox.BringToFront(); }; newTextBox.Size = new Size(140, 21); //Calcualate the next logical position based on the existing controls. 10 padding if (controlCount > 0) newTextBox.Location = new Point(10, ((controlCount * 21) + controlCount * 9) + 9); else newTextBox.Location = new Point(10, 9); }