Mehrzeilige Eingaben in Winforms datagrid


Das Problem: wie Datagrid so konfigurieren, dass es mehrzeilige Eingaben in ihrer TextBox-Standardzellen akzeptieren können? Die erste Sache ist RowHight groß genug, um mehr als eine Zeile in einer Zelle sichtbar zu machen. Ist die Eigenschaft Multiline auf wahre pro Standard, also wir brauchen nicht zu ändern.

Es bleibt jedoch das Problem der Schaffung neuer Linien mit 'Enter'-Taste drücken. Ist das Standardverhalten bei DataGrid zur nächsten Zelle zu springen, so dass es die Frage auftauchte wie abgefangen und leiten dieses Ereignis?

Das sollte einfach, dachte ich und verlor Stunden die Lösung zu finden. At zuerst in Google, dann von mir. Fand es nur:

Ich verwende die gewöhnliche Methode, um solche Dinge zu tun: ein neues Steuerelement ableiten, und überschreiben Sie die geschützte Methode ProcessCmdKey. Der Hinweis ist nicht SendKeys.send ('{Enter}') zu verwenden, da es offenbar wieder an das Netz weitergeleitet wird, sondern die Text-Eigenschaft des zugrunde liegenden Textsteuerelements direkt ändern. Hier ist das Code-Snippet, das die Arbeit erledigt:

[C#]

publicclass OLDataGrid: System.Windows.Forms.DataGrid
{
protectedoverride System.Boolean ProcessCmdKey (Ref Message msg, Keys KeyData)
{
Wenn ((msg. WParam.ToInt32() == (Int) Keys.Enter))
{
Int-Spalte = this. CurrentCell.ColumnNumber;
DataGridTextBoxColumn MyTextBoxColumn = Null;
Foreach (DataGridTableStyle CurrTableStyle in TableStyles)
Wenn (this. DataMember == currTableStyle.MappingName)
{
MyTextBoxColumn =
(DataGridTextBoxColumn) currTableStyle.GridColumnStyles[column];
zu brechen;
};
Wenn (MyTextBoxColumn! = Null)
myTextBoxColumn.TextBox.AppendText('\x0D\x0A');
true zurück.
}
sonst
returnbase. ProcessCmdKey (Ref msg, KeyData);
}
}

Das Netz muss gebunden werden und TableStyle(s) zu verwenden, da nur dann AFAIK das zugrunde liegende Steuerelement Text zugegriffen werden kann. Es können mehrere Tablestyles: Raster prüft automatisch, ob die aktuelle Spalte in der ausgewählten existiert TableStyle AV zu verhindern

PS Es ist mein erster Artikel hier und ich freuen uns auf Feedback!









Mehrzeilige Eingaben in Winforms datagrid


Mehrzeilige Eingaben in Winforms datagrid : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Das Problem: wie Datagrid so konfigurieren, dass es mehrzeilige Eingaben in ihrer TextBox-Standardzellen akzeptieren können? Die erste Sache ist RowHight groß genug, um mehr als eine Zeile in einer Zelle sichtbar zu machen. Ist die Eigenschaft Multiline auf wahre pro Standard, also wir brauchen nicht zu ändern.

Es bleibt jedoch das Problem der Schaffung neuer Linien mit 'Enter'-Taste drücken. Ist das Standardverhalten bei DataGrid zur nächsten Zelle zu springen, so dass es die Frage auftauchte wie abgefangen und leiten dieses Ereignis?

Das sollte einfach, dachte ich und verlor Stunden die Lösung zu finden. At zuerst in Google, dann von mir. Fand es nur:

Ich verwende die gewöhnliche Methode, um solche Dinge zu tun: ein neues Steuerelement ableiten, und überschreiben Sie die geschützte Methode ProcessCmdKey. Der Hinweis ist nicht SendKeys.send ('{Enter}') zu verwenden, da es offenbar wieder an das Netz weitergeleitet wird, sondern die Text-Eigenschaft des zugrunde liegenden Textsteuerelements direkt ändern. Hier ist das Code-Snippet, das die Arbeit erledigt:

[C#]

publicclass OLDataGrid: System.Windows.Forms.DataGrid
{
protectedoverride System.Boolean ProcessCmdKey (Ref Message msg, Keys KeyData)
{
Wenn ((msg. WParam.ToInt32() == (Int) Keys.Enter))
{
Int-Spalte = this. CurrentCell.ColumnNumber;
DataGridTextBoxColumn MyTextBoxColumn = Null;
Foreach (DataGridTableStyle CurrTableStyle in TableStyles)
Wenn (this. DataMember == currTableStyle.MappingName)
{
MyTextBoxColumn =
(DataGridTextBoxColumn) currTableStyle.GridColumnStyles[column];
zu brechen;
};
Wenn (MyTextBoxColumn! = Null)
myTextBoxColumn.TextBox.AppendText('\x0D\x0A');
true zurück.
}
sonst
returnbase. ProcessCmdKey (Ref msg, KeyData);
}
}

Das Netz muss gebunden werden und TableStyle(s) zu verwenden, da nur dann AFAIK das zugrunde liegende Steuerelement Text zugegriffen werden kann. Es können mehrere Tablestyles: Raster prüft automatisch, ob die aktuelle Spalte in der ausgewählten existiert TableStyle AV zu verhindern

PS Es ist mein erster Artikel hier und ich freuen uns auf Feedback!


Mehrzeilige Eingaben in Winforms datagrid

Mehrzeilige Eingaben in Winforms datagrid : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Mehrzeilige Eingaben in Winforms datagrid
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung