La entrada multilínea en winforms datagrid


El problema: ¿cómo configurar el Datagrid lo que sería capaz de aceptar multilínea insumos en su cuadro de texto estándar de las células? El primero es hacer RowHight lo suficientemente grande como para ser capaz de ver más de una línea en una celda. La propiedad Multiline se establece en true por defecto, por lo que no necesitamos cambiar.

no obstante, persiste el problema de la creación de nuevas líneas con pulsar 'Enter'-clave. El estándar de comportamiento en el DataGrid es saltar a la siguiente celda, por lo que surgió la pregunta de cómo capturar y redirigir este evento?

Que debe ser fácil pensé y desperdicio de horas para encontrar la solución. En primer lugar en Google, entonces por mí mismo. Acabo de encontrar esto:

yo uso el método ordinario para hacer estas cosas: se derivan de un nuevo control y anular el protegido methode ProcessCmdKey. La idea es no utilizar SendKeys.send ('{Enter}') porque al parecer es redirigido de vuelta a la red, pero para modificar la propiedad Text de la base del control de Texto directamente. Aquí está el fragmento de código que hace el trabajo:

[C#]

public class OLDataGrid : Sistema.Windows.Los formularios.DataGrid
{
protegidas reemplazar el Sistema.Boolean ProcessCmdKey (ref Mensaje msg, Llaves keyData)
{
si ((msg.WParam.ToInt32() == (int) Teclas.Intro))
{
int columna = este.CurrentCell.Columnanúmero
DataGridTextBoxColumn myTextBoxColumn = null
foreach (DataGridTableStyle currTableStyle en TableStyles)
si (esto.DataMember == currTableStyle.MappingName)
{
myTextBoxColumn =
(DataGridTextBoxColumn) currTableStyle.GridColumnStyles[columna]
break
}
si (myTextBoxColumn != null)
myTextBoxColumn.Cuadro de texto.AppendText('/x0D/x0A')
return true
}
else
volver a la base.ProcessCmdKey(ref msg, keyData)
}
}

La red debe ser enlazado y el uso TableStyle(s), porque sólo entonces AFAIK el Texto subyacente de control se puede acceder. Se puede utilizar más de una Tablestyles: la cuadrícula comprobará automáticamente si la columna actual que existe en el elegido TableStyle para evitar AV.

PS & #39 s mi primer artículo aquí y yo estaría encantado de recibir sus comentarios!









La entrada multilinea en winforms datagrid


La entrada multilinea en winforms datagrid : Multi-millones de consejos para hacer su vida mas facil.


El problema: ¿como configurar el Datagrid lo que seria capaz de aceptar multilinea insumos en su cuadro de texto estandar de las celulas? El primero es hacer RowHight lo suficientemente grande como para ser capaz de ver mas de una linea en una celda. La propiedad Multiline se establece en true por defecto, por lo que no necesitamos cambiar.

no obstante, persiste el problema de la creacion de nuevas lineas con pulsar 'Enter'-clave. El estandar de comportamiento en el DataGrid es saltar a la siguiente celda, por lo que surgio la pregunta de como capturar y redirigir este evento?

Que debe ser facil pense y desperdicio de horas para encontrar la solucion. En primer lugar en Google, entonces por mi mismo. Acabo de encontrar esto:

yo uso el metodo ordinario para hacer estas cosas: se derivan de un nuevo control y anular el protegido methode ProcessCmdKey. La idea es no utilizar SendKeys.send ('{Enter}') porque al parecer es redirigido de vuelta a la red, pero para modificar la propiedad Text de la base del control de Texto directamente. Aqui esta el fragmento de codigo que hace el trabajo:

[C#]

public class OLDataGrid : Sistema.Windows.Los formularios.DataGrid
{
protegidas reemplazar el Sistema.Boolean ProcessCmdKey (ref Mensaje msg, Llaves keyData)
{
si ((msg.WParam.ToInt32() == (int) Teclas.Intro))
{
int columna = este.CurrentCell.Columnanumero
DataGridTextBoxColumn myTextBoxColumn = null
foreach (DataGridTableStyle currTableStyle en TableStyles)
si (esto.DataMember == currTableStyle.MappingName)
{
myTextBoxColumn =
(DataGridTextBoxColumn) currTableStyle.GridColumnStyles[columna]
break
}
si (myTextBoxColumn != null)
myTextBoxColumn.Cuadro de texto.AppendText('/x0D/x0A')
return true
}
else
volver a la base.ProcessCmdKey(ref msg, keyData)
}
}

La red debe ser enlazado y el uso TableStyle(s), porque solo entonces AFAIK el Texto subyacente de control se puede acceder. Se puede utilizar mas de una Tablestyles: la cuadricula comprobara automaticamente si la columna actual que existe en el elegido TableStyle para evitar AV.

PS & #39 s mi primer articulo aqui y yo estaria encantado de recibir sus comentarios!


La entrada multilínea en winforms datagrid

La entrada multilínea en winforms datagrid : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación