Winform中代码Dialog控件实现(打开,保存,改变字体,颜色,打印功能)

//打开:
private void openFileDialogBTN_Click(object sender, System.EventArgs e)
{
    OpenFileDialog openFileDialog 
= new OpenFileDialog();
    openFileDialog.InitialDirectory 
= "c:\\";//注意这里写路径时要用c:\\而不是c:openFileDialog.Filter="文本文件|*.*|C#文件|*.cs|所有文件|*.*";
    openFileDialog.RestoreDirectory = true;
    openFileDialog.FilterIndex 
= 1;
    
if (openFileDialog.ShowDialog() == DialogResult.OK)
    
{
        fName 
= openFileDialog.FileName;
        File fileOpen 
= new File(fName);
        isFileHaveName 
= true;
        richTextBox1.Text 
= fileOpen.ReadFile();
        richTextBox1.AppendText(
"");
    }

}


//保存:

private void saveAsDialogBTN_Click(object sender, System.EventArgs e)
{
    SaveFileDialog saveFileDialog 
= new SaveFileDialog();
    saveFileDialog.Filter 
= "文本文件|*.*|C#文件|*.cs|所有文件|*.*";
    saveFileDialog.FilterIndex 
= 2;
    saveFileDialog.RestoreDirectory 
= true;
    
if (saveFileDialog.ShowDialog() == DialogResult.OK)
    
{
        
if (saveFileDialog.ShowDialog() == DialogResult.OK)
        
{
            fName 
= saveFileDialog.FileName;
            File fSaveAs 
= new File(fName);
            isFileHaveName 
= true;
        file:
//保存的文件有名字
            fSaveAs.WriteFile(richTextBox1.Text);
        }

    }

}



//改变字体大小

private void fontDialogBTN_Click(object sender, System.EventArgs e)
{
    FontDialog fontDialog 
= new FontDialog();
    fontDialog.Color 
= richTextBox1.ForeColor;
    fontDialog.AllowScriptChange 
= true;
    fontDialog.ShowColor 
= true;
    
if (fontDialog.ShowDialog() != DialogResult.Cancel)
    
{
        richTextBox1.SelectionFont 
= fontDialog.Font;//将当前选定的文字改变字体
    }

}


//改变字体颜色:

private void colorDialogBTN_Click(object sender, System.EventArgs e)
{
    ColorDialog colorDialog 
= new ColorDialog();
    colorDialog.AllowFullOpen 
= true;
    colorDialog.FullOpen 
= true;
    colorDialog.ShowHelp 
= true;
    colorDialog.Color 
= Color.Black;//初始化当前文本框中的字体颜色,当用户在ColorDialog对话框中点击"取消"按钮
file://恢复原来的值
    colorDialog.ShowDialog();
    richTextBox1.SelectionColor 
= colorDialog.Color;
}


//打印:

private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    
float linesPerPage = 0;//页面的行号
    float yPos = 0;//打印字符串的纵向位置
    int count = 0;//行计数器
    float leftMargin = e.MarginBounds.Left;//左边距
    float topMargin = e.MarginBounds.Top;//上边距
    string line = null;//行字符串
    Color clr = richTextBox1.SelectionColor;//当前的打印颜色,在我这个程序没有实现不同颜色打印
    SolidBrush b = new SolidBrush(clr);//刷子
    fnt = richTextBox1.SelectionFont;//当前的打印字体
    linesPerPage = e.MarginBounds.Height / fnt.GetHeight(e.Graphics);//每页可打印的行数
file://逐行循行打印一页
    while (count)
    
{
        yPos 
= topMargin + (count * fnt.GetHeight(e.Graphics));
        e.Graphics.DrawString(line, fnt, b, leftMargin, yPos, 
new StringFormat());
        count
++;
    }

file:
//如果该页打印完成而line不为空说明还有没完成的页面,发出下一次的打印事件,
file://在下一次的打印中lineReader会自动读取上次没有打印完的内容。lineReader可以记录当前读取的位置
    if (line != null)
        e.HasMorePages 
= true;
    
else
        e.HasMorePages 
= false;
}


private void printPreviewBTN_Click(object sender, System.EventArgs e)
{
    lineReader 
= new StringReader(richTextBox1.Text);
    
try
    
{
        PrintPreviewDialog printPreviewDialog1 
= new PrintPreviewDialog();
        printPreviewDialog1.Document 
= printDocument;
        printPreviewDialog1.FormBorderStyle 
= FormBorderStyle.Fixed3D;
        printPreviewDialog1.ShowDialog(
this);
    }

    
catch (Exception excep)
    
{
        MessageBox.Show(excep.Message, 
"打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
        
return;
    }

}


private void printDialogBTN_Click(object sender, System.EventArgs e)
{
    PrintDialog printDialog 
= new PrintDialog();
    printDialog.Document 
= printDocument;
    
if (printDialog.ShowDialog() != DialogResult.Cancel)
    
{
        
try
        
{
            printDocument.Print();
        }

        
catch (Exception ex)
        
{
            MessageBox.Show(ex.Message);
        }

    }

}
原文地址:https://www.cnblogs.com/di305449473/p/1243220.html