2015-06-25 123 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分,我已經做了一段時間! –