none
event 事件名稱查詢 RRS feed

  • 一般討論

  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button1.Enter, Button1.ForeColorChanged, Button1.FontChanged

    這樣要如何知道我用的是哪個事件???

    2018年8月31日 上午 04:02

所有回覆

  • 您可以參考這篇討論的做法:

    Determine event name from EventHandler<T> in C#

    2018年8月31日 上午 06:21
  • 我對這需求的原因挺好奇的,為什麼會需要從事件委派函式知道自己被委派給哪個事件呢?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    2018年8月31日 上午 07:25
    版主
  • 我對這需求的原因挺好奇的,為什麼會需要從事件委派函式知道自己被委派給哪個事件呢?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    主要我要用的是

        Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
    
    and
    
        Private Sub DataGridView1_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles DataGridView1.PreviewKeyDown

    要用,我製作了=>當按下這個資料格,他的這行就變色其他不便,按下鍵盤上的上 or 下,換那一行變色。

    之前那個是比較好理解。


    2018年8月31日 上午 07:41
  • 你的意思是要在 PreviewKeyDown 知道自己按下鍵盤時目前 cell 的位置是在哪一個 Row and Column ?

    如果是這樣,取 CurrentCell 符合需求嗎?
    如連結的範例:
    https://docs.microsoft.com/zh-tw/dotnet/framework/winforms/controls/get-and-set-the-current-cell-wf-datagridview-control


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/




    2018年8月31日 上午 07:50
    版主
  • 這是我目前寫的

    Private Sub DataGridView_Variety(ByVal sender As Object, ByVal e As Object) Handles DataGridView1.CellClick, DataGridView1.PreviewKeyDown
            Me.lbl_Part.DataBindings.Clear()
            Me.lbl_PDNO.DataBindings.Clear()
            '連結DataGridView 互相連繫。
            If _Int_Select = Nothing Then
                Me.lbl_Part.DataBindings.Add("Text", Me.DataGridView1.DataSource, "Part", True)
                Me.lbl_PDNO.DataBindings.Add("Text", Me.DataGridView1.DataSource, "PDNO", True)
            ElseIf _Int_Select = 1 Then
                Me.lbl_Part.DataBindings.Add("Text", Me.DataGridView1.DataSource, "G_NO", True)
            End If
    
            For i As Integer = 0 To Me.DataGridView1.RowCount - 1
                Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.White
            Next
    
            If e.ToString = "System.Windows.Forms.DataGridViewCellEventArgs" Then
                Me.DataGridView1.Rows(Me.DataGridView1.CurrentCell.RowIndex).DefaultCellStyle.BackColor = System.Drawing.Color.Magenta
            ElseIf e.ToString = "System.Windows.Forms.PreviewKeyDownEventArgs" Then
                Dim IntSS As Integer = Nothing
                If e.KeyCode = Keys.Up Then : IntSS = -1
                ElseIf e.KeyCode = Keys.Down Then : IntSS = 1
                End If
    
                If Not (e.KeyCode = Keys.PageUp Or e.KeyCode = Keys.PageDown) Then
                    Dim IntRowIndex As Integer = Nothing
                    If Not IsNothing(Me.DataGridView1.CurrentCell) Then
                        IntRowIndex = Me.DataGridView1.CurrentCell.RowIndex + IntSS
                        If Not (IntRowIndex > 0 AndAlso IntRowIndex < Me.DataGridView1.RowCount - 1) Then IntRowIndex -= IntSS
                    End If
                    Me.DataGridView1.Rows(IntRowIndex).DefaultCellStyle.BackColor = System.Drawing.Color.Magenta
                End If
            End If
        End Sub

    想用事件當識別!!!


    • 已編輯 qoo10223 2018年9月6日 上午 02:52
    2018年8月31日 上午 08:06
  • 您可以參考這篇討論的做法:

    Determine event name from EventHandler<T> in C#

    Private Sub DataGridView_Variety(ByVal sender As Object, ByVal e As Object) Handles Button1.Click, Button1.KeyPress
            Me.Label1.Text = RaiseEventX(Function() sender)
        End Sub
    
        Public Function RaiseEventX(Of T)(ByVal eventToRaise As Expression(Of Func(Of T))) As String
            Dim eventName As String = CType(eventToRaise.Body, MemberExpression).Member.Name
            Return eventName
        End Function

    結果=>$VB$Local_sender

    是我哪裡用錯了!!

    2018年8月31日 上午 08:09
  • 你的意思是要在 PreviewKeyDown 知道自己按下鍵盤時目前 cell 的位置是在哪一個 Row and Column ?

    如果是這樣,取 CurrentCell 符合需求嗎?
    如連結的範例:
    https://docs.microsoft.com/zh-tw/dotnet/framework/winforms/controls/get-and-set-the-current-cell-wf-datagridview-control


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/




    我照著做

    Private Sub DataGridView1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellChanged
            Me.CC_VarietyText1.DataBindings.Clear()
            '連結DataGridView 互相連繫。
            Me.CC_VarietyText1.DataBindings.Add("Text", Me.DataGridView1.DataSource, "G_NO", True)
            For i As Integer = 0 To Me.DataGridView1.RowCount - 1
                Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = System.Drawing.Color.White
            Next
    
            Dim IntRowIndex As Integer = Nothing
            If Not IsNothing(Me.DataGridView1.CurrentCell) Then IntRowIndex = Me.DataGridView1.CurrentCell.RowIndex
            Me.DataGridView1.Rows(IntRowIndex).DefaultCellStyle.BackColor = System.Drawing.Color.Magenta
        End Sub

    但是一開始顯示資料 背景會全部有顏色,在之後點選或按上下才會正常。

    請問一開始 背景全有顏色 要如何解決!!!!

    2018年9月3日 上午 01:44