Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs')
-rw-r--r--mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs176
1 files changed, 176 insertions, 0 deletions
diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs
new file mode 100644
index 00000000000..7394d7f18ee
--- /dev/null
+++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/DataGridViewTextBoxCell.cs
@@ -0,0 +1,176 @@
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Copyright (c) 2005 Novell, Inc. (http://www.novell.com)
+//
+// Author:
+// Pedro Martínez Juliá <pedromj@gmail.com>
+//
+
+
+#if NET_2_0
+
+using System;
+using System.Drawing;
+
+namespace System.Windows.Forms {
+
+ public class DataGridViewTextBoxCell : DataGridViewCell {
+
+ private int maxInputLength = 32767;
+ private static DataGridViewTextBoxEditingControl editingControl;
+
+ static DataGridViewTextBoxCell () {
+ editingControl = new DataGridViewTextBoxEditingControl();
+ editingControl.Multiline = false;
+ editingControl.BorderStyle = BorderStyle.None;
+ }
+
+ public DataGridViewTextBoxCell () {
+ }
+
+ public override Type FormattedValueType {
+ get { return typeof(string); }
+ }
+
+ public virtual int MaxInputLength {
+ get { return maxInputLength; }
+ set {
+ if (value < 0) {
+ throw new ArgumentOutOfRangeException("MaxInputLength coudn't be less than 0.");
+ }
+ maxInputLength = value;
+ }
+ }
+
+ public override Type ValueType {
+ get { return typeof(string); }
+ }
+
+ public override object Clone () {
+ DataGridViewTextBoxCell result = (DataGridViewTextBoxCell) base.Clone();
+ result.maxInputLength = maxInputLength;
+ return result;
+ }
+
+ public override void DetachEditingControl () {
+ if (DataGridView == null) {
+ throw new InvalidOperationException("There is no associated DataGridView.");
+ }
+ if (DataGridView.Controls.Contains(editingControl)) {
+ DataGridView.Controls.Remove(editingControl);
+ }
+ Console.WriteLine("Detached: ({0}, {1});", RowIndex, ColumnIndex);
+ }
+
+ public override void InitializeEditingControl (int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) {
+ if (DataGridView == null) {
+ throw new InvalidOperationException("There is no associated DataGridView.");
+ }
+ if (!DataGridView.Controls.Contains(editingControl)) {
+ DataGridView.Controls.Add(editingControl);
+ }
+ editingControl.EditingControlDataGridView = DataGridView;
+ editingControl.MaxLength = maxInputLength;
+ if (initialFormattedValue == null || (string) initialFormattedValue == "") {
+ editingControl.Text = "";
+ }
+ else {
+ editingControl.Text = (string) initialFormattedValue;
+ }
+ editingControl.ApplyCellStyleToEditingControl(dataGridViewCellStyle);
+ editingControl.PrepareEditingControlForEdit(true);
+ }
+
+ public override bool KeyEntersEditMode (KeyEventArgs e) {
+ throw new NotImplementedException();
+ }
+
+ public override void PositionEditingControl (bool setLocation, bool setSize, Rectangle cellBounds, Rectangle cellClip, DataGridViewCellStyle cellStyle, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) {
+ if (setSize) {
+ editingControl.Size = new Size(cellBounds.Width, cellBounds.Height + 2);
+ }
+ if (setLocation) {
+ editingControl.Location = new Point(cellBounds.X, cellBounds.Y);
+ }
+ editingControl.Invalidate();
+ }
+
+ public override string ToString () {
+ return this.GetType().Name;
+ }
+
+ protected override Rectangle GetContentBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex) {
+ throw new NotImplementedException();
+ }
+
+ protected override Rectangle GetErrorIconBounds (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex) {
+ throw new NotImplementedException();
+ }
+
+ protected override Size GetPreferredSize (Graphics graphics, DataGridViewCellStyle cellStyle, int rowIndex, Size constraintSize) {
+ throw new NotImplementedException();
+ }
+
+ protected override void OnEnter (int rowIndex, bool throughMouseClick) {
+ }
+
+ protected override void OnLeave (int rowIndex, bool throughMouseClick) {
+ }
+
+ protected override void OnMouseClick (DataGridViewCellMouseEventArgs e) {
+ }
+
+ protected override void OnMouseEnter (int rowIndex) {
+ }
+
+ protected override void OnMouseLeave (int rowIndex) {
+ }
+
+ protected override void Paint (Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) {
+ //////////////////
+ /*
+ Size size = DataGridViewCell.MeasureTextSize(graphics, (string) formattedValue, cellStyle.Font, TextFormatFlags.Default);
+ switch (cellStyle.Alignment) {
+ case DataGridViewContentAlignment.TopLeft:
+ break;
+ }
+ //cell.SetContentBounds(cellBounds);
+ */
+ //////////////////
+ if ((cellState & DataGridViewElementStates.Selected) != 0) {
+ graphics.FillRectangle(new SolidBrush(cellStyle.SelectionBackColor), cellBounds);
+ graphics.DrawString((string) formattedValue, cellStyle.Font, new SolidBrush(cellStyle.SelectionForeColor), cellBounds, StringFormat.GenericDefault);
+ }
+ else {
+ graphics.FillRectangle(new SolidBrush(cellStyle.BackColor), cellBounds);
+ graphics.DrawString((string) formattedValue, cellStyle.Font, new SolidBrush(cellStyle.ForeColor), cellBounds, StringFormat.GenericDefault);
+ }
+ PaintBorder(graphics, clipBounds, cellBounds, cellStyle, advancedBorderStyle);
+ }
+
+ protected override void OnDataGridViewChanged () {
+ editingControl.EditingControlDataGridView = DataGridView;
+ }
+
+ }
+
+}
+
+#endif