DOBON.NETプログラミング道掲示板

ツリー一括表示

Nomalアイコン DataGridViewでAlt+Enterで改行したい /aks (24/04/08(Mon) 20:13) #35596
Nomalアイコン Re[1]: DataGridViewでAlt+Enterで改行したい /KOZ (24/04/09(Tue) 00:38) #35597
  └Nomalアイコン Re[2]: DataGridViewでAlt+Enterで改行したい /aks (24/04/13(Sat) 14:17) #35598 解決み!


親記事 / ▼[ 35597 ]
■35596 / 親階層)  DataGridViewでAlt+Enterで改行したい
□投稿者/ aks 一般人(1回)-(2024/04/08(Mon) 20:13:16)
  • アイコン環境/言語:[.NET Framework4.8 C# Windows10 VS2022 ] 
    分類:[.NET] 

    お世話になります。
    
    DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか?
    Shift+Enterで改行しないように実装はできましたが、先に進めず困っておりましてご教授願います。
    よろしくお願いいたします。
    
    
    //DataGridViewの派生クラスを作成
    //デザイナーでtextboxの列を1つ追加済み。
    public class DataGridView_Kai : DataGridView
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal)
        {
            //Shift+Enterの同時押しを無効化
            if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Shift)
            {
                return true;
            }
    
            //Alt+Enterの同時押下時に改行。。。
            if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Alt)
            {
                  //テストでKeysValを0にしても、下のセルへ移動しますので、実装場所が違うのではないかと考えております。
    
            }
    
            return base.ProcessCmdKey(ref msg, KeysVal);
        }
    }
    
    public partial class Form1 : Form
    {
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            dataGridView_Kai1.DefaultCellStyle.WrapMode  = DataGridViewTriState.True;
    
            dataGridView_Kai1.RowCount = 10;
        }
    }
    

違反を報告
[ □ Tree ] 返信 削除キー/

▲[ 35596 ] / ▼[ 35598 ]
■35597 / 1階層)  Re[1]: DataGridViewでAlt+Enterで改行したい
□投稿者/ KOZ 一般人(35回)-(2024/04/09(Tue) 00:38:33)
  • アイコン
    2024/04/10(Wed) 05:38:01 編集(投稿者)
    
    ■No35596に返信(aksさんの記事)
    > DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか?
    
    こんな感じでしょうか?
    
    public class DataGridView_Kai : DataGridView
    {
        protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal) {
            if (IsCurrentCellInEditMode) {
                TextBox textBox = EditingControl as TextBox;
                if (textBox != null && textBox.Multiline) {
                    switch (KeysVal) {
                        case Keys.Enter | Keys.Shift:
                            return true;
                        case Keys.Enter | Keys.Alt:
                            string newLine = Environment.NewLine;
                            if (textBox.MaxLength == 0 ||
                                textBox.TextLength - textBox.SelectionLength + newLine.Length <= textBox.MaxLength) {
                                textBox.SelectedText = newLine;
                            }
                            return true;
                    }
                }
            }
            return base.ProcessCmdKey(ref msg, KeysVal);
        }
    }
    

違反を報告
[ 親 35596 / □ Tree ] 返信 削除キー/

▲[ 35597 ] / 返信無し
■35598 / 2階層)  Re[2]: DataGridViewでAlt+Enterで改行したい
□投稿者/ aks 一般人(2回)-(2024/04/13(Sat) 14:17:57)
  • アイコンKOZ様

    ご回答いただきありがとうございます。
    教えていただいた内容で試したところ解決しております。

解決み!
違反を報告
[ 親 35596 / □ Tree ] 返信 削除キー/


Mode/  Pass/


- Child Tree -