/// <summary>
        /// This can be used to get a cached brush from the specified data grid view
        /// </summary>
        /// <param name="dgv">The data grid view from which to get the cached brush</param>
        /// <param name="color">The color of the brush</param>
        /// <returns>The brush to use</returns>
        internal static SolidBrush GetCachedBrush(DataGridView dgv, Color color)
        {
            MethodInfo mi = DataGridViewHelper.DataGridViewType(dgv).GetMethod("GetCachedBrush",
                                                                               BindingFlags.NonPublic | BindingFlags.Instance);

            return((SolidBrush)mi.Invoke(dgv, new object[] { color }));
        }
        /// <summary>
        /// This can be used to get the address of the cell that the mouse is currently over
        /// </summary>
        /// <param name="dgv">The data grid view from which to get the point</param>
        /// <returns>The point at which the mouse entered the cell</returns>
        internal static Point MouseEnteredCellAddress(DataGridView dgv)
        {
            PropertyInfo pi = DataGridViewHelper.DataGridViewType(dgv).GetProperty("MouseEnteredCellAddress",
                                                                                   BindingFlags.NonPublic | BindingFlags.Instance);

            return((Point)pi.GetValue(dgv, null));
        }
        /// <summary>
        /// This can be used to get a cached type converter from the specified data grid view
        /// </summary>
        /// <param name="dgv">The data grid from which to get the cached type converter</param>
        /// <param name="type">The type for which to get a converter</param>
        /// <returns>The type converter for the specified type</returns>
        internal static TypeConverter GetCachedTypeConverter(DataGridView dgv, Type type)
        {
            MethodInfo mi = DataGridViewHelper.DataGridViewType(dgv).GetMethod("GetCachedTypeConverter",
                                                                               BindingFlags.NonPublic | BindingFlags.Instance);

            return((TypeConverter)mi.Invoke(dgv, new object[] { type }));
        }
        /// <summary>
        /// This can be used to get the cached graphics object from the specified <see cref="DataGridView"/>
        /// control.
        /// </summary>
        /// <param name="dgv">The data grid view from which to get the cached graphics object</param>
        /// <returns>The cached graphics object</returns>
        internal static Graphics CachedGraphics(DataGridView dgv)
        {
            PropertyInfo pi = DataGridViewHelper.DataGridViewType(dgv).GetProperty("CachedGraphics",
                                                                                   BindingFlags.NonPublic | BindingFlags.Instance);

            return((Graphics)pi.GetValue(dgv, null));
        }
        /// <summary>
        /// This can be used to get whether or not the grid is showing focus cues
        /// </summary>
        /// <param name="dgv">The data grid view from which to get the point</param>
        internal static bool ShowFocusCues(DataGridView dgv)
        {
            PropertyInfo pi = DataGridViewHelper.DataGridViewType(dgv).GetProperty("ShowFocusCues",
                                                                                   BindingFlags.NonPublic | BindingFlags.Instance);

            return((bool)pi.GetValue(dgv, null));
        }
        /// <summary>
        /// This can be used to notify the data grid view that it may need to resize the specified column and row
        /// </summary>
        /// <param name="dgv">The data grid view to notify</param>
        /// <param name="column">The column to resize</param>
        /// <param name="row">The row to resize</param>
        internal static void OnCellCommonChange(DataGridView dgv, int column, int row)
        {
            MethodInfo mi = DataGridViewHelper.DataGridViewType(dgv).GetMethod("OnCellCommonChange",
                                                                               BindingFlags.NonPublic | BindingFlags.Instance);

            mi.Invoke(dgv, new object[] { column, row });
        }
        /// <summary>
        /// This can be used to show or hide the tool tip for the given cell
        /// </summary>
        /// <param name="dgv">The data grid view in which to show or hide the tool tip</param>
        /// <param name="activate">True to activate the tool tip, false to hide it</param>
        /// <param name="toolTipText">The tool tip text to show</param>
        /// <param name="columnIndex">The column index of the cell</param>
        /// <param name="rowIndex">The row index of the cell</param>
        internal static void ActivateToolTip(DataGridView dgv, bool activate, string toolTipText,
                                             int columnIndex, int rowIndex)
        {
            MethodInfo mi = DataGridViewHelper.DataGridViewType(dgv).GetMethod("ActivateToolTip",
                                                                               BindingFlags.NonPublic | BindingFlags.Instance);

            mi.Invoke(dgv, new object[] { activate, toolTipText, columnIndex, rowIndex });
        }