第一个项目的经历3

来源:互联网 发布:韩庚人品知乎 编辑:程序博客网 时间:2024/06/06 01:18

      项目第一期一共做了将近4个月,期间涉及了70+个页面。我自告奋勇单独负责了一系画面。这里埋藏着炸弹。。。。。后来令我不堪重负,差点死于非命。。。。

 

      谈及这几个月的感受,真是痛苦并快乐着。每天加班到很晚,周末也不休息。连元旦都来上班了。唉。辛苦自不用说。但是的确很快乐。我自己负责一系画面,使得我的思维具有连贯性,不像去其他人画面都是零散的,一系画面多个人做。做完也不知道到底做的是什么。

 

      我这画面是基础的数据库管理画面。我遇到了几个大难题。弄得我痛不欲生。

 

      第一个就是Combobox的焦点问题。情况为,当容器内只有一个可以接受焦点的控件时,切这个控件在焦点离开时又编辑处理,那么焦点无法离开。当时我真的蒙了。我觉得这个是无解的。焦点离开,编辑状态开始,编辑焦点又回到控件了,所以TAB键没法移开。后来查了许许多多资料发现这个是微软的BUG,有个替代的方法,就是移开时本控件隐藏,编辑结束,再显示。虽然会闪闪的,但是的确移开了。后来我改成了只读,就是控件变灰,焦点无法进入,就不会闪闪的。我高兴了好一阵。但是日本那边又指摘了。。。。。Shift+Tab 焦点无法移开。。。。。

唉。无解。。。。。最后这件事转给别的人去做了,结果如何未知。。。。

 

      第二个是Combobox的下拉菜单刷新问题。因为我的画面是表的管理,几乎都有添加删除更改的功能,那么就会出现我在画面删除了一个Combobox里面有的项目,但是页面不关闭重新打开就没法刷新。我在多个地方写方法都不行。后来把共通加了个方法才行。难道页面无法处理这个么?未知。。。。

      再后来设计式样书改得天花乱坠,我竟然一个月接到同一个页面的式样修改多达15份。最基础的品目管理页面修改最为频繁,在纳品前一天竟然修改表结构!!!我操!!!!!

 

      话说这系画面我真的学到了许多。有个设计是要求Datagridview里面的CheckBox有个小变化的,挺有意思。要求某一列里是“-”的行如果check了,那么这行前面列功能属性相同的所有列都check。如果某一列没check,那么这行要更着变成不check。我用俩For循环做的,感觉挺好玩,谁知道另外一个页面也有类似的要求,就给我了。那个页面是至多有一个处于check状态。我弄了好一会。不过也成功了,给我兴奋坏了。

 

      这里有个小地方要注意。在方法里是焦点离开才会有变化,要是想同步,就要加方法在showing里。

 

 

      这个是第一个提到的代码:

 

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    ''' <summary>

    ''' 利用可否.チェックチェンジド

    ''' </summary>

    ''' <param name="sender"></param>

    ''' <param name="e"></param>

    ''' <remarks></remarks>

    Private Sub dgvMenuMaster_CurrentCellDirtyStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgvMenuMaster.CurrentCellDirtyStateChanged

 

        If dgvMenuMaster.IsCurrentCellDirty Then

            dgvMenuMaster.CommitEdit(DataGridViewDataErrorContexts.Commit)

        End If

 

    End Sub

 

    ''' <summary>

    ''' サブシステムの機能の利用可否のチェックをすべて、切り替える

    ''' </summary>

    ''' <param name="sender"></param>

    ''' <param name="e"></param>

    ''' <remarks></remarks>

    Private Sub dgvMenuMaster_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvMenuMaster.CellValueChanged

 

        '初期化時、イベントがトリガしません

        If tk = True Then

 

            '処理の抜ける

            Exit Sub

 

        End If

 

        Dim r As Integer = Me.dgvMenuMaster.CurrentCell.RowIndex                    'テックするセルの行数

        Dim c As Integer = Me.dgvMenuMaster.CurrentCell.ColumnIndex               'テックするセルの列数

        Dim cbx As DataGridViewCheckBoxCell = DirectCast(Me.dgvMenuMaster.Rows(r).Cells(c), DataGridViewCheckBoxCell)

 

        'チェックがクリックされた行がサブシステムの行(プログラムIDと機能名が空欄)だった場合

        If Me.dgvMenuMaster.Rows(r).Cells(c + 1).Value = "-" Then

 

            For i As Integer = 0 To Me.dgvMenuMaster.Rows.Count - 1

 

                If Me.dgvMenuMaster.Rows(i).Cells(c - 2).Value = Me.dgvMenuMaster.Rows(r).Cells(c - 2).Value Then

                    Me.dgvMenuMaster.Rows(i).Cells(c).Value = cbx.FormattedValue

                End If

 

            Next

 

        End If

 

        'チェックがクリックされた行がサブシステムの行(プログラムIDと機能名が空欄しいない)だった場合

        If Me.dgvMenuMaster.Rows(r).Cells(c + 1).Value <> "-" Then

 

            Dim nullcheck As Boolean = False

 

            For i As Integer = 0 To Me.dgvMenuMaster.Rows.Count - 1

 

                If Me.dgvMenuMaster.Rows(i).Cells(c - 2).Value = Me.dgvMenuMaster.Rows(r).Cells(c - 2).Value AndAlso _

                Me.dgvMenuMaster.Rows(i).Cells(c + 1).Value = "-" Then

 

                    If Me.dgvMenuMaster.Rows(r).Cells(c).Value = True Then

 

                        Me.dgvMenuMaster.Rows(i).Cells(c).Value = cbx.FormattedValue

 

                    End If

 

                End If

 

                If Me.dgvMenuMaster.Rows(i).Cells(c - 2).Value = Me.dgvMenuMaster.Rows(r).Cells(c - 2).Value AndAlso _

                Me.dgvMenuMaster.Rows(i).Cells(c + 1).Value <> "-" Then

 

                    If Me.dgvMenuMaster.Rows(i).Cells(c).Value = True Then

 

                        nullcheck = True

 

                    End If

 

                End If

            Next

 

            If nullcheck = False Then

 

                For i As Integer = 0 To Me.dgvMenuMaster.Rows.Count - 1

                    If Me.dgvMenuMaster.Rows(i).Cells(c - 2).Value = Me.dgvMenuMaster.Rows(r).Cells(c - 2).Value AndAlso _

                    Me.dgvMenuMaster.Rows(i).Cells(c + 1).Value = "-" Then

                        Me.dgvMenuMaster.Rows(i).Cells(c).Value = False

                    End If

                Next

 

            End If

 

        End If

 

    End Sub

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 

      还有第二个那个至多有一个check的:

 

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 

 

原创粉丝点击