I have a Custom Collection Editor and I would like to change the sizes of the "listbox" and "propertyBrowser" controls. Both have Size() properties, but they don't change when you set them to something else. Any ideas how to do this?
Here is the code for my Custom CollectionEditor:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualBasic;
using System.ComponentModel.Design;
using System.Windows.Forms;
namespace FirstPassYield
{
public class MyCollectionEditor : CollectionEditor
{
public static bool bEditingCollection = false;
public delegate void MyFormClosedEventHandler(object sender, FormClosedEventArgs e);
public event MyFormClosedEventHandler MyFormClosed;
public delegate void MyFormLoadEventHandler(object sender, System.EventArgs e);
public event MyFormLoadEventHandler MyFormLoad;
public delegate void MyFormControlAddedEventHandler(object sender, System.EventArgs e);
public event MyFormControlAddedEventHandler MyFormControlAdded;
public MyCollectionEditor(Type type)
: base(type)
{
}
protected override string GetDisplayText(object value)
{
Defect item = new Defect();
item = (FirstPassYield.Defect)value;
if (String.IsNullOrEmpty(item.DefectCode))
return base.GetDisplayText(" ");
else
{
String sDisplay = item.DefectCode.ToString().Substring(0, item.DefectCode.ToString().IndexOf(":"));
return base.GetDisplayText(string.Format("{0}", sDisplay));
}
}
protected override CollectionForm CreateCollectionForm()
{
CollectionForm collectionForm = base.CreateCollectionForm();
Font myDialogFont = new Font("Microsoft San Seraf", 9.0f, FontStyle.Bold); // Form's Font
Font myFont = new Font("Microsoft San Seraf", 9.0f, FontStyle.Bold); // Individual Item's Font
// Set the Dialog Font
collectionForm.Font = myDialogFont;
// Turn OFF Help Button
collectionForm.HelpButton = false;
// Set the BackColor, StartPosition and Size of the form
collectionForm.BackColor = Color.FromName("SteelBlue");
collectionForm.StartPosition = FormStartPosition.CenterParent;
collectionForm.Size = new Size(660, 500);
// Add Form Handlers for trapping Load and Close
collectionForm.FormClosed += this.collection_FormClosed;
collectionForm.Load += this.collection_FormLoad;
var overArchingTableLayoutPanel = collectionForm.Controls["overArchingTableLayoutPanel"];
overArchingTableLayoutPanel.Controls["listbox"].Size = new Size(overArchingTableLayoutPanel.Controls["listbox"].Width / 4, overArchingTableLayoutPanel.Controls["listbox"].Height);
overArchingTableLayoutPanel.Controls["propertyBrowser"].Size = new Size(overArchingTableLayoutPanel.Controls["propertyBrowser"].Width / 4, overArchingTableLayoutPanel.Controls["propertyBrowser"].Height);
var addRemoveTableLayoutPanel = overArchingTableLayoutPanel.Controls["addRemoveTableLayoutPanel"];
// Set the BackColor of the Buttons - It appears that they get set by default to the form's BackColor
addRemoveTableLayoutPanel.Controls["addButton"].BackColor = Color.FromName("Control");
addRemoveTableLayoutPanel.Controls["removeButton"].BackColor = Color.FromName("Control");
// Set the Font for the Add, Remove buttons
addRemoveTableLayoutPanel.Controls["addButton"].Font = myFont;
addRemoveTableLayoutPanel.Controls["removeButton"].Font = myFont;
// Add Handlers for trapping Add and Remove Buttons
addRemoveTableLayoutPanel.Controls["addButton"].Click += AddButton_Click;
addRemoveTableLayoutPanel.Controls["removeButton"].Click += RemoveButton_Click;
var okCancelTableLayoutPanel = overArchingTableLayoutPanel.Controls["okCancelTableLayoutPanel"];
// Set the BackColor of the Buttons - It appears that they get set by default to the form's BackColor
okCancelTableLayoutPanel.Controls["okButton"].BackColor = Color.FromName("Control");
okCancelTableLayoutPanel.Controls["cancelButton"].BackColor = Color.FromName("Control");
// Set the Font for the OK, Cancel buttons
okCancelTableLayoutPanel.Controls["okButton"].Font = myFont;
okCancelTableLayoutPanel.Controls["cancelButton"].Font = myFont;
// Add Handlers for trapping OK and Cancel Buttons
okCancelTableLayoutPanel.Controls["okButton"].Click += OKButton_Click;
okCancelTableLayoutPanel.Controls["cancelButton"].Click += CancelButton_Click;
// Change the Member Labels' Text, Color and Font
overArchingTableLayoutPanel.Controls["membersLabel"].Text = "&Defect List:";
overArchingTableLayoutPanel.Controls["membersLabel"].ForeColor = Color.FromName("White");
overArchingTableLayoutPanel.Controls["membersLabel"].Font = myFont;
// Change the Properties Labels' Text, Color and Font
overArchingTableLayoutPanel.Controls["propertiesLabel"].Text = "&Properties:";
overArchingTableLayoutPanel.Controls["propertiesLabel"].ForeColor = Color.FromName("White");
overArchingTableLayoutPanel.Controls["propertiesLabel"].Font = myFont;
// Set the BackColor of the Buttons - It appears that they get set by default to the form's BackColor
overArchingTableLayoutPanel.Controls["upButton"].BackColor = Color.FromName("Control");
overArchingTableLayoutPanel.Controls["downButton"].BackColor = Color.FromName("Control");
// Add Handlers for trapping Up and Down Buttons
overArchingTableLayoutPanel.Controls["upButton"].Click += UpButton_Click;
overArchingTableLayoutPanel.Controls["downButton"].Click += DownButton_Click;
var propertyBrowser = overArchingTableLayoutPanel.Controls["propertyBrowser"] as PropertyGrid;
if (propertyBrowser.Controls.Count != 0)
{
// Set the PropertySorting and ToolbarVisibilty
propertyBrowser.PropertySort = PropertySort.NoSort;
propertyBrowser.ToolbarVisible = false;
}
// Do something based on which Collection Editor was called
switch (collectionForm.Text)
{
case "Defect Collection Editor":
{
break;
}
}
// Hide Add, Remove, Up and Down Buttons
//collectionForm.Controls["overArchingTableLayoutPanel"].Controls["addRemoveTableLayoutPanel"].Controls["addButton"].Visible = false;
//collectionForm.Controls["overArchingTableLayoutPanel"].Controls["addRemoveTableLayoutPanel"].Controls["removeButton"].Visible = false;
//collectionForm.Controls["overArchingTableLayoutPanel"].Controls["upButton"].Visible = false;
//collectionForm.Controls["overArchingTableLayoutPanel"].Controls["downButton"].Visible = false;
return collectionForm;
}
private void collection_FormLoad(object sender, System.EventArgs e)
{
bEditingCollection = true;
}
private void AddButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("Add Button Clicked");
}
private void RemoveButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("Remove Button Clicked");
}
private void OKButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("OK Button Clicked");
}
private void CancelButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("Cancel Button Clicked");
}
private void UpButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("Up Button Clicked");
}
private void DownButton_Click(object sender, EventArgs e)
{
//MessageBox.Show("Down Button Clicked");
}
private void collection_FormClosed(object sender, FormClosedEventArgs e)
{
bEditingCollection = false;
}
}
}