событие нажатия клавиши в виде таблицы данных? - PullRequest
2 голосов
/ 28 декабря 2011

Мне нужно написать простую функцию, которая, когда человек вводит количество ящиков, запускает событие нажатия клавиши и number of boxes*someamount попадает в столбец суммы. Я добавил datagridview, используя управление перетаскиванием

image

Я думаю, что код будет написан здесь согласно моим исследованиям

private void dataGridView1_EditingControlShowing(object sender,
    DataGridViewEditingControlShowingEventArgs e) {

}

Но я не знаю, как поместить событие Keyup и столбец доступа numberofboxes and Amount. Спасибо

Ответы [ 2 ]

7 голосов
/ 29 декабря 2011

Я проверил это, и оно работает, используя событие нажатия клавиши вниз, и умножает значение NumberBoxes на someAmount, каждый раз, когда вы вводите новое число в ячейку, оно автоматически вычисляет вас.

        public Form1()
    {
        InitializeComponent();
        MyDataGridViewInitializationMethod();
    }


    private void MyDataGridViewInitializationMethod()
    {

        dataGridView1.EditingControlShowing +=
    new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
    }

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        e.Control.KeyPress +=
            new KeyPressEventHandler(Control_KeyPress);
    }

    private void Control_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (char.IsNumber(e.KeyChar))
        {

            string cellValue = Char.ToString(e.KeyChar);
            //Get the column and row position of the selected cell
            int column = dataGridView1.CurrentCellAddress.X;
            int row = dataGridView1.CurrentCellAddress.Y;

            if (column == 1)
            {
            //Gets the value that existings in that cell
            string test = dataGridView1[column, row].EditedFormattedValue.ToString();
            //combines current key press to the contents of the cell
            test = test + cellValue;
            int intNumberBoxes = Convert.ToInt32(test);
            //Some amount to mutiple the numberboxes by
            int someAmount = 10;
            dataGridView1[column + 1, row].Value = intNumberBoxes * someAmount;
            }
        }
    }


}
0 голосов
/ 14 сентября 2012

для vb.net

Десятичное подтверждение:

 Public Sub New()
        InitializeComponent()
        MyDataGridViewInitializationMethod()
    End Sub
    Private Sub MyDataGridViewInitializationMethod()
        AddHandler dataGridView1.EditingControlShowing, AddressOf dataGridView1_EditingControlShowing
    End Sub
    Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs)
        AddHandler e.Control.KeyPress, AddressOf Control_KeyPress
    End Sub
    Dim dotOnce As Boolean
    Private Sub Control_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        If e.KeyChar Like "[']" Then
            e.Handled = True
            Exit Sub
        End If
        If e.KeyChar = "." Then
            If dotOnce Then
                e.Handled = True
            End If
            dotOnce = True
        Else
           If (Not e.KeyChar Like "[0-9 . ]") Then
                e.Handled = True
                Exit Sub
            End If
        End If
          End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...