第一个项目的经历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的:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- 第一个项目的经历3
- 我做第一个项目的经历
- 第一个项目的经历1
- 第一个项目的经历2
- 第一个项目的经历4
- 研一的第一个项目经历
- (3)QlikView的第一个项目
- (3)QlikView的第一个项目(续)
- 第一个iOSAPP上架经历
- 我做的第一个门户网站艰苦经历
- 历史上第一个手机用户的雷人经历
- 我的第一个项目
- 偶的第一个项目
- 我的第一个项目
- 我的第一个项目
- 第一个实用的项目
- 第一个接触的项目
- IOS的第一个项目
- 未能找到存储过程 'sp_oacreate'解决方法
- 够了
- 有用的正则表达式实例收集
- 在非锁屏的任意状态下监测HOME键
- 不错的C++框架: Thrift
- 第一个项目的经历3
- FB4 AS3 如何获取advancedDataGrid中鼠标点击checkbox列的行号
- Jquery 异步加载页面 简单示例
- dddddddddddtest
- night_dancers
- Map根据value进行排序
- sphinx/coreseek 安装全过程
- vxworks end驱动的调试
- 解决SWFUpload上传文件组件使用时报告2049错误