How to use Ansys.UI.Toolkit GridView OnKeyDown event

1990chs
1990chs Member Posts: 47
10 Comments First Anniversary Name Dropper
**

Now I try to write a gridview table using Ansys.UI.Toolkit and add a paste function.
I found OnKeyDown event in Ansys.UI.Toolkit.GridView (in the following picture), but i don't know how to use it.

I try to use KeyEventDelegate, but it don't work.

# -*- coding: utf-8 -*-
import clr
clr.AddReference("Ans.UI.Toolkit")
clr.AddReference("Ans.UI.Toolkit.Base")
import Ansys.UI.Toolkit
import Ansys.UI.Toolkit.Base
import Ansys.UI.Toolkit.Drawing
from Ansys.UI.Toolkit import *
from Ansys.UI.Toolkit.Base import *
from Ansys.UI.Toolkit.Drawing import *


class Delete_APLX(Window):

    def __init__(self,ExtAPI,Transaction,MechanicalPanelEnum):

        self.Text = 'Apply Bolt Pretension Forces'

        self.Width = 550
        self.ExtAPI = ExtAPI
        self.Transaction = Transaction
        self.MechanicalPanelEnum = MechanicalPanelEnum
        self.ErrorColose = False
        self._BuildUI()

    def _BuildUI(self):


        self.mainPanel = TableLayoutPanel()

        self.Add(self.mainPanel)    

        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #0  
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #1  
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #2  
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #3  
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #4  
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #5
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #6
        self.mainPanel.Rows.Add(TableLayoutSizeType.Percent, 12.5)    #7
        # self.mainPanel.Rows.Add(TableLayoutSizeType.Absolute, 300)

        self.mainPanel.Columns.Add(TableLayoutSizeType.Percent, 25) #0
        self.mainPanel.Columns.Add(TableLayoutSizeType.Percent, 25) #1
        self.mainPanel.Columns.Add(TableLayoutSizeType.Percent, 25) #2
        self.mainPanel.Columns.Add(TableLayoutSizeType.Percent, 25) #3


        #--------------------------------------------------------------------------------------------- 
        #           Bolt GridVirew Setting
        # --------------------------------------------------------------------------------------------
        self.BoltGridView = GridView()
        self.BoltGridView.ColumnCount = 6

        self.BoltGridView.ColumnHeadersVisible = True

        self.BoltGridView.TextWrapEnabled = True

        self.BoltGridView.OnKeyDown += KeyEventDelegate(self.GridViewPaste)
        self.mainPanel.Controls.Add(self.BoltGridView, 2, 0, 5, 4)  #Row 3, Column 1 To Row 7 Column 4

    def GridViewPaste(self, sender, args):
        Text = Clipboard.GetDataObject().GetText().replace('\n','')
        qq = self.BoltGridView.SelectedCells[0].Text 
        self.BoltGridView.SelectedCells[0].EditText = 'test'
        MessageBox.Show(qq)

fram = Delete_APLX(ExtAPI,Transaction,MechanicalPanelEnum)
fram.Run()
Tagged:

Best Answer

  • 1990chs
    1990chs Member Posts: 47
    10 Comments First Anniversary Name Dropper
    **
    edited December 2023 Answer ✓

    @Mike.Thompson said:
    You need to point to a method like below. This method should have two tags: sender and event (self if used within a class as well).
    The event properties will have things like which key is down, if shift is used etc…

    In the init function:
    self.BoltGridView.OnKeyDown += MyKeyDownMethod

    Later in the class definition
    def MyKeyDownMethod(self, sender, event):
    pass

    I have solved, the event should be KeyDown.

    Also if we use Ansys.UI.Toolkit GridView, we should use the following code:

    self.BoltGridView.KeyDown += KeyEventDelegate(self.GridViewPaste)
    
    def GridViewPaste(self, sender, args):
          pass
    

    It is a little different with System.Windows.Forms.dll file.

Answers

  • Mike.Thompson
    Mike.Thompson Member, Employee Posts: 394
    100 Likes 25 Answers 100 Comments Second Anniversary
    ✭✭✭✭
    edited December 2023

    You need to point to a method like below. This method should have two tags: sender and event (self if used within a class as well).
    The event properties will have things like which key is down, if shift is used etc…

    In the init function:
    self.BoltGridView.OnKeyDown += MyKeyDownMethod

    Later in the class definition
    def MyKeyDownMethod(self, sender, event):
    pass

  • Dominique_Cracovia
    Dominique_Cracovia Member Posts: 8
    First Anniversary Name Dropper First Comment
    **

    Hi @1990chs

    I'm searching for any documentation of Ansys.UI.Toolkit.

    Could you tell me what kind of software did you use to find the location of the "OnKeyDown" event?

  • 1990chs
    1990chs Member Posts: 47
    10 Comments First Anniversary Name Dropper
    **

    @Dominique_Cracovia said:
    Hi @1990chs

    I'm searching for any documentation of Ansys.UI.Toolkit.

    Could you tell me what kind of software did you use to find the location of the "OnKeyDown" event?

    Use ILSpy software to view the source code