我想創建一個程序,用戶可以在datagridview中對單元格進行着色,然後將datagridview保存爲圖像。但是,當我按照需要生成我的datagridview時,我遇到了範圍問題。保存超出範圍C#
我想不出一種很好的(而且很快)的方式來重構這種方式是有道理的。如何避免我的datagridview超出範圍在這種情況下?
謝謝!
public partial class Form2 : Form
{
bool erasing = false;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
dataGridView1.ColumnCount = Properties.Settings.Default.Width;
dataGridView1.RowCount = Properties.Settings.Default.Height;
dataGridView1.RowHeadersVisible = false;
dataGridView1.ColumnHeadersVisible = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView1.AutoSize = true;
dataGridView1.ClearSelection();
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Black;
dataGridView1.CellClick += new DataGridViewCellEventHandler(dataGridView1_CellClick);
}
void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (erasing)
{
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.White;
dataGridView1[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.White;
}
else
{
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Black;
dataGridView1[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Black;
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
erasing = true;
}
else
{
erasing = false;
}
}
private void savegviewImg()
{
Bitmap bmap = new Bitmap(DataGridView1.Bounds.Width, DataGridView1.Bounds.Height);
DataGridView1.DrawToBitmap(bmap, new Rectangle(1, 1, DataGridView1.Width, DataGridView1.Height));
bmap.Save("C:\\HelpMehStackOFlowYoureMyOnlyHope.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
它在哪裏創建,它在哪裏超出範圍? – nvoigt
你知道它是窗體的屬性而不是局部變量,對吧?因此範圍是整個班級。 –
那麼我被告知「DataGridView1」不存在於它的當前上下文中。這是一個範圍問題是不是?當我在saveviewImg方法 – Christopher