示例#1
0
        public override void InitializeEditingControl(int rowIndex, object initialFormattedValue,
                                                      DataGridViewCellStyle dataGridViewCellStyle)
        {
            if (this.RowIndex < 0)
            {
                return;
            }

            // Set the value of the editing control to the current cell value.
            base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);

            DataGridViewTrackEditingControl ctl = DataGridView.EditingControl as DataGridViewTrackEditingControl;

            ctl.Font  = dataGridViewCellStyle.Font;
            ctl.Width = GetSize(this.RowIndex).Width;
            ctl.SelectionBackColor = dataGridViewCellStyle.BackColor;
            ctl.ParityText         = (StringWithParity)this.Value;
            CardDataGridView grid = (CardDataGridView)DataGridView;

            ctl.variant        = grid.GetVariant(rowIndex, this.ColumnIndex);
            ctl.originalLength = ctl.Text.Length;
            if (ctl.variant != null)
            {
                bool ali       = grid.GetVariant(rowIndex, this.ColumnIndex).Alignment == null;
                int  alignment = ali ? 0 : (int)grid.GetVariant(rowIndex, this.ColumnIndex).Alignment;
                ctl.Margin             = new Padding(alignment * CalculateFontSize(ctl.Font).Width + 3, 3, 3, 3);
                ctl.SelectionAlignment = HorizontalAlignment.Left;
                ctl.Modified           = false;
                if (ali)
                {
                    if (ctl.variant.HasSS)
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Left;
                    }
                    else if (ctl.variant.HasES)
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Right;
                    }
                    else
                    {
                        ctl.SelectionAlignment = HorizontalAlignment.Center;
                    }
                }
            }
            else
            {
                ctl.Margin             = new Padding(3, 3, 3, 3);
                ctl.SelectionAlignment = HorizontalAlignment.Center;
            }
        }
示例#2
0
        public override void DetachEditingControl()
        {
            if (DataGridView == null)
            {
                return;
            }

            DataGridViewTrackEditingControl ctl = DataGridView.EditingControl as DataGridViewTrackEditingControl;

            if (ctl != null && ctl.Modified)
            {
                StringWithParity text = ctl.ParityText;

                CardDataGridView grid = (CardDataGridView)DataGridView;
                Card             card = grid.GetCard(this.RowIndex);

                if (card != null)
                {
                    card.SetTrackString(this.ColumnIndex - (int)Presentation.cardGridColumn.TRACK1_COLUMN, text);
                }
                //maybe this will slow the programm, but it is needed.
                // otherwise we will get alignment bugs once content changed.
                ListCardUtil.SetAlignment(grid.GetActualCardsFromGrid(), 0);
                if (crf.Properties.Settings.Default.autoResize &&
                    (ctl.Text.Length > ctl.originalLength || ctl.Text.Length < ctl.originalLength - 10)
                    )
                {
                    grid.AutoResizeColumn(this.ColumnIndex);
#if DEBUG
                    CardDataGridView.RESIZECOLUMNCOUNT++;
                    grid.UpdateStatusStripTextWhenResizing();
#endif
                }
            }

            base.DetachEditingControl();
        }
示例#3
0
        // Images for selected and normal states.
        private Image GetRtfImage(int rowIndex, object value, bool selected, DataGridViewCellStyle cellStyle, int?leftAlignment)
        {
            Size cellSize = GetSize(rowIndex);

            if (cellSize.Width < 1 || cellSize.Height < 1)
            {
                return(null);
            }

            //RichTextBox ctl = _editingControl;
            DataGridViewTrackEditingControl ctl = _editingControl;

            if (ctl == null)
            {
                return(null);
            }
            //ctl.ApplyCellStyleToEditingControl(cellStyle);
            ctl.Size       = GetSize(rowIndex);
            ctl.Font       = cellStyle.Font;
            ctl.ParityText = (StringWithParity)value;
            //ctl.Text = ((CRCString)value).ToString();

            if (leftAlignment == null)
            {
                switch (cellStyle.Alignment)
                {
                case DataGridViewContentAlignment.MiddleLeft:
                    ctl.SelectionAlignment = HorizontalAlignment.Left;
                    break;

                case DataGridViewContentAlignment.MiddleRight:
                    ctl.SelectionAlignment = HorizontalAlignment.Right;
                    break;

                default:
                    ctl.SelectionAlignment = HorizontalAlignment.Center;
                    break;
                }

                leftAlignment = 0;
            }

            // Print the content of RichTextBox to an image.
            Size imgSize = new Size(cellSize.Width - _editingControl.Margin.Left - _editingControl.Margin.Right + 1 - leftAlignment.Value * fontSize.Width,
                                    cellSize.Height - _editingControl.Margin.Bottom - _editingControl.Margin.Top + 1);

            //it might happen if alignment is big.
            if (imgSize.Width <= 0)
            {
                imgSize.Width = 1;
            }
            Image rtfImg = null;

            if (selected)
            {
                // Selected cell state
                ctl.BackColor = DataGridView.DefaultCellStyle.SelectionBackColor;
                ctl.ForeColor = DataGridView.DefaultCellStyle.SelectionForeColor;

                // Print image
                rtfImg = RichTextBoxPrinter.Print(ctl, imgSize.Width, imgSize.Height);

                // Restore RichTextBox
                ctl.BackColor = DataGridView.DefaultCellStyle.BackColor;
                ctl.ForeColor = DataGridView.DefaultCellStyle.ForeColor;
            }
            else
            {
                rtfImg = RichTextBoxPrinter.Print(ctl, imgSize.Width, imgSize.Height);
            }

            return(rtfImg);
        }