C#.NET试题
题目内容:根据一个指定的值,如INT I=10,然后等分DataGrid为2行5列的10个单元格,然后在每个单元格中显示一张图片,而且每个单元格所显示的图片可以根据某一变量值进行替换(即不同变量值时,选定单元格所显示的图片不同)。如果删除中间的某个单元格后,其后的单元格能自动前移,补齐刚才删除留下的空白。
具体要求:在winform下实现我已经写了一部分代码了!如果删除中间的某个单元格后,其后的单元格能自动前移,补齐刚才删除留下的空白。 这段没有实现
题目内容:根据一个指定的值,如INT I=10,然后等分DataGrid为2行5列的10个单元格,然后在每个单元格中显示一张图片,而且每个单元格所显示的图片可以根据某一变量值进行替换(即不同变量值时,选定单元格所显示的图片不同)。如果删除中间的某个单元格后,其后的单元格能自动前移,补齐刚才删除留下的空白。
具体要求:在winform下实现我已经写了一部分代码了!如果删除中间的某个单元格后,其后的单元格能自动前移,补齐刚才删除留下的空白。 这段没有实现
{
for( int i=0;i<row;i++)
{
for( int j=0;j<col;j++)
{
if(imageList1.Images.Count>i*5+j)
{
grid1.Images.Add(imageList1.Images[i*5+j],(i*5+j).ToString());
grid1.Cell(i+1, j+1).SetImage((i*5+j).ToString());
}
else
MessageBox.Show((i*5+j).ToString(),imageList1.Images.Count.ToString());
}
}
// grid1.Refresh();
} private void Form1_LoadImage()
{
Bitmap Img ; int row = grid1.Rows-1;
int col = grid1.Cols-1; for( int i=0;i<row;i++)
{
for( int j=0;j<col;j++)
{
string path = @"F:\我的文档\Visual Studio Projects\CSharpTest\image\"+(i*5+j).ToString()+@".jpg";
if(System.IO.File.Exists(path))
{
Img = new Bitmap(path);
grid1.Images.Add(imageList1.Images[i*5+j],(i*5+j).ToString());
Img.Dispose();
Img = null;
}
}
}
} private void menuItemRef_Click(object sender, System.EventArgs e)
{
} private static int temp = 0;
private static int num = 0;
private static bool isfist = false; private void menuItemDel_Click(object sender, System.EventArgs e)
{
int row = grid1.Rows-1;
int col = grid1.Cols-1; int DelRow = grid1.Selection.LastRow -1;
int DelCol = grid1.Selection.LastCol -1; num ++; if(!isfist)
{
isfist = true;
temp = DelRow*5+DelCol;
num = 0;
} int k = DelRow*5+DelCol;
if(temp > k)
{
grid1.Images.Remove(DelRow*5+DelCol);
imageList1.Images.RemoveAt(DelRow*5+DelCol) ;
}
else
{
imageList1.Images.RemoveAt(DelRow*5+DelCol + num) ;
grid1.Images.Remove(DelRow*5+DelCol + num) ;
}
this.Form1_BindImage(row,col); grid1.Selection.ClearAll();
// try
// {
// for( int i=0;i<row;i++)
// {
// for( int j=0;j<col;j++)
// {
// if(i == DelRow && j == DelCol) //要删除的单元格
// {
// if(DelRow!=grid1.Rows-1 && DelCol!=grid1.Cols-1) //不是最后一个单元格
// {
// if(IsDel)
// {
// imageList1.Images.RemoveAt(i*5+j+1); //将图片从imageList1 中删除
// this.Text += i*5+j+1 +"----";
// }
// else
// {
// imageList1.Images.RemoveAt(i*5+j); //将图片从imageList1 中删除
// this.Text += i*5+j+"----";
// }
// grid1.Cell(i+1, j+1).SetImage((i*5+j+1).ToString());
// IsDel = true;
// }
// }
// else
// {
// if(IsDel)
// grid1.Cell(i+1, j+1).SetImage((i*5+j+1).ToString());
// else
// grid1.Cell(i+1, j+1).SetImage((i*5+j).ToString());
// }
//
// }
// }
//
// grid1.Refresh();
// }
// catch(Exception ee)
// {
// throw new Exception(ee.Message);
// }
} private void menuItemPast_Click(object sender, System.EventArgs e)
{
grid1.Selection.PasteData();
} private void menuItemCopy_Click(object sender, System.EventArgs e)
{
grid1.Selection.CopyData();
} private void Form1_Load(object sender, System.EventArgs e)
{
try
{
this.Form1_LoadImage();
this.Form1_BindImage(grid1.Rows-1,grid1.Cols-1);
}
catch(Exception ee)
{
string err = "初始化DataGrid出错:" + ee.Message;
throw new Exception(err);
}
finally
{ }
}
然后在onpaint中画arraylist中的图片
删除的时候把arraylist里面的图片删除就可以了
由于你是在onpaint中画的,所以不用担心补足空白的问题
ArrayList list = getimage();//得到图片
protected override void OnPaint(PaintEventArgs e)
{
DrawImages(e.Graphics);
base.OnPaint(e);
}private void DrawImages(Graphics g);
{
//根据你的要求画图片
}private void DeleteImage()
{
//删除图片,从list中删除,然后调用Invalidate
this.Invalidate();
}