其实挺喜欢这款控件库,记录一下遇到的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;
}
}
|