CSkin博客

标题: 个人使用CSkin控件库过程中遇到的一些问题记录,随时更新 [打印本页]

作者: MSky    时间: 2016-12-3 15:52
标题: 个人使用CSkin控件库过程中遇到的一些问题记录,随时更新
其实挺喜欢这款控件库,记录一下遇到的bug,希望能早日修复吧
一、SkinDataGridview
鼠标悬浮于ColumnHeader时引发索引超出范围异常,该异常由VS捕获,实际使用中暂未发现影响


当SkinDataGridview绑定有数据源(DataTable),通过后台线程删除DataTable中数据时,SkinDataGridview中数据会跟随数据源减少,此时如果进行暴力操作(SkinDataGridview中乱点,排序,改变窗体大小等),会有较大概率触发如下异常
System.IndexOutOfRangeException: 索引超出了数组界限。
   在 System.Data.Common.BooleanStorage.Get(Int32 record)
   在 System.Data.DataRow.get_Item(DataColumn column, DataRowVersion version)
   在 System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetValue(Int32 boundColumnIndex, Int32 columnIndex, Int32 rowIndex)



二、SkinSplitContainer
如图界面设计

为了描述清楚,从左到右的4个SplitContainer分别命名为1.2.3.4,其中3号会向右折叠,折叠后右侧4号区域消失,这时如果关闭窗体,则异常
临时解决办法:FormClosing事件中处理
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("是否确认退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (三号.Panel2.Width == 0)//这里三号拆分器拆分的是中间区域与右侧区域,中间区域为panel1,右侧区域为panel2,当右侧区域被折叠后,panel2宽度为0
                {
                    三号.SplitterDistance -= 10;//将三号拆分器位置左移几个像素位置,保证panel2的宽度>0就不会异常了
                }
            }
            else
            {
                e.Cancel = true;
            }
        }






欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2