2015-06-25 61 views
0

我想创建一个程序,用户可以在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); 
    } 

} 

}

+0

它在哪里创建,它在哪里超出范围? – nvoigt

+0

你知道它是窗体的属性而不是局部变量,对吧?因此范围是整个班级。 –

+0

那么我被告知“DataGridView1”不存在于它的当前上下文中。这是一个范围问题是不是?当我在saveviewImg方法 – Christopher

回答

1

应当dataGridView1和不DataGridView1在savegviewImg()方法,没有?这就是你在其他地方引用它的方式。

+0

中调用它时,有一个红色的sqwiggles的例子:'(这是令人尴尬的..哈哈感谢!现在明显工作。 – Christopher

+1

赫赫,最简单的25分,我已经做了一段时间! –