Skip to content

Instantly share code, notes, and snippets.

@WildGenie
Last active January 6, 2017 23:02
Show Gist options
  • Save WildGenie/f4f7ca0001b365edae23fc9fd3c9d67c to your computer and use it in GitHub Desktop.
Save WildGenie/f4f7ca0001b365edae23fc9fd3c9d67c to your computer and use it in GitHub Desktop.
#r "System.Windows.Forms"
#r "System.Drawing"
using System.Windows.Forms;
using System.Drawing;
using System;
Application.Run(new Form1());
public class Form1 : Form
{
public Form1()
{
this.Load += FormLoad;
this.Controls.Add(dataGridView1);
}
private void FormLoad(object sender, EventArgs e)
{
AddColorColumn();
}
private DataGridView dataGridView1 = new DataGridView();
DataGridViewComboBoxColumn comboBoxColumn;
DataGridViewComboBoxColumn comboBoxDetailColumn;
private void AddColorColumn()
{
comboBoxColumn = new DataGridViewComboBoxColumn();
comboBoxColumn.Items.AddRange(
Color.Red, Color.Yellow, Color.Green, Color.Blue);
comboBoxColumn.ValueType = typeof(Color);
dataGridView1.Columns.Add(comboBoxColumn);
comboBoxDetailColumn = new DataGridViewComboBoxColumn();
comboBoxDetailColumn.ValueType = typeof(Color);
dataGridView1.Columns.Add(comboBoxDetailColumn);
dataGridView1.CellEndEdit += dataGridView1_CellEndEdit;
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
DataGridView dataGridView = sender as DataGridView;
DataGridViewComboBoxCell masterCell =
(DataGridViewComboBoxCell)dataGridView.Rows[e.RowIndex].Cells[0];
DataGridViewComboBoxCell detailCell =
(DataGridViewComboBoxCell)dataGridView.Rows[e.RowIndex].Cells[1];
if (masterCell.Value != null && e.ColumnIndex == 0)
{
detailCell.Items.Clear();
Color color = (Color)masterCell.Value;
var oldValue = detailCell.Value;
detailCell.Value = null;
switch (color.Name)
{
case "Red":
detailCell.Items.AddRange(
Color.DarkRed, Color.IndianRed, Color.MediumVioletRed, Color.PaleVioletRed);
break;
case "Green":
detailCell.Items.AddRange(
Color.Green, Color.DarkGreen, Color.LightSeaGreen, Color.LawnGreen);
break;
case "Blue":
detailCell.Items.AddRange(
Color.CornflowerBlue, Color.LightBlue, Color.LightSteelBlue, Color.PowderBlue);
break;
case "Yellow":
detailCell.Items.AddRange(
Color.GreenYellow, Color.LightYellow, Color.YellowGreen, Color.LightGoldenrodYellow);
break;
}
if (oldValue != null && detailCell.Items.Contains(oldValue))
{
detailCell.Value = oldValue;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment