2015-04-07 238 views
0

我有一个五列的gridview。从第二个gridview单元格我有一个名为字体大小的列,我已经使用了组合框,并给予像(2.4.6.8.10)这样的静态数字。如何增加/更改使用组合框的字体大小

字体大小的目的是,当您从组合框中选择任何数字时,它必须更改该行的字体大小文本。

我已经创建了一个组合框和一个标签,我将选择字体大小,标签将根据所选大小更改文本大小。我坠落到这个应用到DataGridView它会改变整个细胞该行

代码

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    lblchangesize.Font = new Font(lblchangesize.Font.FontFamily, Convert.ToInt32(comboBox1.SelectedItem), lblchangesize.Font.Style); 
} 

我试图将其应用到GridView,但它不工作

Dictionary<int, Font> rowFont = new Dictionary<int, Font>(); 

    public void selectedRowsFont(Font F) 
    { 
     foreach(DataGridViewRow row in Gridview_Output.SelectedRows) 
     { 
      rowFont[row.Index] = F; 
     } 
    } 
    private void Gridview_Output_CellFormatting_1(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     Font F = null; 
     if (!rowFont.TryGetValue(e.RowIndex, out F)) 
      F = Gridview_Output.Font; 

     e.CellStyle.Font = F; 
    } 
+1

什么问题? – stefankmitph

+0

我想将其应用于我的datagridview,当您更改字体大小时,它必须更改整行。上面的代码是使用标签时的示例。 – prosts

+0

和DataGridView有什么样的问题?你有什么尝试? – stefankmitph

回答

0

使用DataGridView.CellFormatting事件。然后设置字体e.CellStyle.Font = ...

您需要维护基于行索引的字体查找,并使用e.RowIndex作为关键字。

编辑:

// member variable: 
Dictionary<int,Font> rowFont = new Dictionary<int,Font>(); 

public void SetSelectedRowsFont(Font f) { 
    // foreach selected row, 
    // rowFont[row.Index] = f; 
} 

// ... in cell formatting: 
Font f = null; 
if (!rowFont.TryGetValue(e.RowIndex, out f)) 
    f = this.Font; 
e.CellStyle.Font = f; 
+0

请检查我的更新的代码,并从那指导我 – prosts

+0

@prosts您正在设置'lblchangesize.Font'。相反,它应该是'e.CellStyle.Font'。 – Loathing

+0

我按照你的指示,现在我有Convert.ToInt32(FontOut.SelectedItem)它说不包含定义的问题。我已经更改了代码,因为您可以看到我的更新代码。请帮助我! – prosts