C# winform對話框用法大全收藏

?

對話框中我們常用了以下幾種:

1、文件對話框(FileDialog) 它又常用到兩個:

   打開文件對話框(OpenFileDialog)

   保存文件對話(SaveFileDialog)

2、字體對話框(FontDialog)

3、顏色對話框(olorDialog)

4、打印預瀏對話框(PrintPreviewDialog)

5、頁面設置(PrintDialog)

6、打印對話框(PrintDialog)

  還有更多,有時間的網友可以看看MSDN。下面我們一個個來介紹。在介紹的過程中我用到了一個自己開發的類:File,主要是文件操作的。

?

  文件對話框(FileDialog)

?

  一、打開文件對話框(OpenFileDialog)

?

  1 OpenFileDialog控件有以下基本屬性

?

InitialDirectory 對話框的初始目錄

Filter 要在對話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*"

FilterIndex 在對話框中選擇的文件篩選器的索引,如果選第一項就設為1

RestoreDirectory 控制對話框在關閉之前是否恢復當前目錄

FileName 第一個在對話框中顯示的文件或最后一個選取的文件

Title 將顯示在對話框標題欄中的字符

AddExtension 是否自動添加默認擴展名

CheckPathExists 在對話框返回之前,檢查指定路徑是否存在

DefaultExt 默認擴展名

DereferenceLinks 在從對話框返回前是否取消引用快捷方式

ShowHelp 啟用"幫助"按鈕

ValiDateNames 控制對話框檢查文件名中是否不含有無效的字符或序列

?

  2 OpenFileDialog控件有以下常用事件

?

?

FileOk 當用戶點擊"打開""保存"按鈕時要處理的事件

HelpRequest 當用戶點擊"幫助"按鈕時要處理的事件

?

  3OpenFileDialog的效果如下:

?

?

?

  可以用以下代碼來實現上面這個對話框:

?

private void openFileDialogBTN_Click(o b je c t sender, System.EventArgs e){

OpenFileDialog openFileDialog=newOpenFileDialog();

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("");

}

}

其中有用到了File()這個類,是我在程序用來執行文件操作,自己寫的,在最后附了這個類的源碼。有興趣的網友可以自己分析。

?

  二、保存文件對話框(SaveFileDialog)

?

  保存文件對話框控件有兩種情況,一就是保存,二就是另存為,保存很簡單,就是在文件已經打開的情況下的,再把文件寫一篇,在這里我們主要講另存為的情況(SaveAs)

?

  1SaveFileDialog控件的屬性

?

?

Filter 要在對話框中顯示的文件篩選器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"

FilterIndex 在對話框中選擇的文件篩選器的索引,如果選第一項就設為1

RestoreDirectory 控制對話框在關閉之前是否恢復當前目錄

AddExtension 是否自動添加默認擴展名

CheckFileExists?

CheckPathExists 在對話框返回之前,檢查指定路徑是否存在

Container 控制在將要創建文件時,是否提示用戶。只有在ValidateNames為真值時,才適用。

DefaultExt 缺省擴展名

DereferenceLinks 在從對話框返回前是否取消引用快捷方式

FileName 第一個在對話框中顯示的文件或最后一個選取的文件

InitialDirector 對話框的初始目錄

OverwritePrompt 控制在將要在改寫現在文件時是否提示用戶,只有在ValidateNames為真值時,才適用

ShowHelp 啟用"幫助"按鈕

Title 將顯示在對話框標題欄中的字符

ValidateNames 控制對話框檢查文件名中是否不含有無效的字符或序列

?

  2SaveFileDialog事件如下:

?

?

?

FileOk 當用戶點擊"打開""保存"按鈕時要處理的事件

HelpRequest 當用戶點擊"幫助"按鈕時要處理的事件

?

?

  3SaveFileDialog的效果如下:

?

?

?

  4、用下例代碼可以實現

?

private void saveAsDialogBTN_Click(o b j ec t sender, System.EventArgs e)

{

SaveFileDialog saveFileDialog=newSaveFileDialog();

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);

}

}

}

  其實這些都可以在VS.NETIDE環境中直接完成,為了說明問題,我還是一條條列也來了。當中用到了一個File的類庫,下面是源程序:

 File.cs

?

using System;

using System.IO;

using System.Windows.Forms;

using System.Text;

?

namespace dialog

{

/**

/// Summary description for File.

///

public class File

{

string fileName;

public File(string fileName)

{

this.fileName=fileName;

}

?

public string ReadFile()

{

try

{

StreamReader sr=newStreamReader(fileName,Encoding.Default);

string result=sr.ReadToEnd();

sr.Close();

return result;

}

catch(Exceptione){MessageBox.Show(e.Message);}

return null;

}

?

public void WriteFile(string str)

{

try

{

StreamWriter sw=newStreamWriter(fileName,false,Encoding.Default);

sw.Write(str);

sw.Close();

}

catch(Exceptione){MessageBox.Show(e.Message,"保存文件出錯!");}

}

}

}

字體對話框(FontDialog)

?

  在文字處理中,我們常用到字體,現在我們來做一個最常見的字體對話框。

?

  一、字體對話框(FontDialog)常用屬性

?

ShowColor 控制是否顯示顏色選項

AllowScriptChange 是否顯示字體的字符集

Font 在對話框顯示的字體

AllowVerticalFonts 是否可選擇垂直字體

Color 在對話框中選擇的顏色

FontMustExist 當字體不存在時是否顯示錯誤

MaxSize 可選擇的最大字號

MinSize 可選擇的最小字號

ScriptsOnly 顯示排除OEMSymbol字體

ShowApply 是否顯示"應用"按鈕

ShowEffects 是否顯示下劃線、刪除線、字體顏色選項

ShowHelp 是否顯示"幫助"按鈕

?

  二、字體對話框(FontDialog)的事件

?

Apply 當點擊"應用"按鈕時要處理的事件

HelpRequest 當點擊"幫助"按鈕時要處理的事件

?

  三、字體對話框(FontDialog)的效果

?

?

  四、實現代碼

?

private void fontDialogBTN_Click(o b j e ct 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;//將當前選定的文字改變字體

}

}

上面代碼將選定的文本設置為當前FontDialog對話框中的字體。

?

  顏色對話框(ColorDialog)

?

  顏色拾取框也是我們常見的對話框之一,下面我們來看看在C#中是如何操作顏色對話框的呢?

?

  一、顏色對話框(ColorDialog)的常見屬性

?

?

AllowFullOpen 禁止和啟用"自定義顏色"按鈕

FullOpen 是否最先顯示對話框的"自定義顏色"部份

ShowHelp 是否顯示"幫助"按鈕

Color 在對話框中顯示的顏色

AnyColor 顯示可選擇任何顏色

CustomColors 是否顯示自定義顏色

SolidColorOnly 是否只能選擇純色

?

  二、顏色對話框(ColorDialog)的效果如下:

?

?

?

  三、實現代碼見下:

?

private void colorDialogBTN_Click(o b j e ct 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;

}

  實現顏色對話框(ColorDialog)很容易吧,其實不只是顏色對話框,C#也是很容易的,只要用心去學,都容易的。講完了顏色對話框(ColorDialog),我們來講打印和頁面設置.

?

頁面設置(PageSetupDialog)

?

  其實頁面設置(PageSetupDialog)沒有太多的講,既然講到這里,我還是把PageSetupDialog中常用的屬性列出來吧

?

  一、頁面設置(PageSetupDialog)常見屬性 

AllowMargins 設置是否可以對邊距的編輯

AllowOrientation 是否可以使用"方向"單選框

AllowPaper 設置是否可以對紙張大小的編輯

AllowPrinter 設置是否可以使用"打印機"按鈕

Document 獲取打印機設置的PrintDocument

MinMargins 允許用戶選擇的最小邊距

?

  二、面設置(PageSetupDialog)的效果如下

  就這么簡單啦,我們看看下面的吧,還有更重磅的東東呢?關于打印的。

?

  打印預瀏及打印

?

  打印是我們在windows編程中常要用到的功能,在以前都是很麻煩工作,但在Microsoft .net Framework中打印是以組件提供給我們使用,不過還是點麻煩的,所以就專門寫出來,供大家參改。

?

  一,在.net環境中,說到打印,就不能不說PrintDocumet這個類,PrintDocument屬于System.Drawing.Printing這個名字空間,PrintDocument這個類是實現打印的核心代碼。

?

  如果要實現打印,就必需首先構造PrintDocument對象添加打印事件,

printDocument.PrintPage+=newPrintPageEventHandler(this.printDocument_PrintPage)

打印其實也是調用Graphics類的方法進行畫圖,下面這代碼是根據MSDN上提供的例程改寫的。MSDN打印例程地址:

?

  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.asp,有興趣的網友可以參改一下。

?

  下面是我改寫的printDocument_PrintPage:

?

?

?

?

private void printDocument_PrintPage(o b je c t 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,newStringFormat());

count++;

}

file://如果該頁打印完成而line不為空說明還有沒完成的頁面,發出下一次的打印事件,

file://在下一次的打印中lineReader會自動讀取上次沒有打印完的內容。lineReader可以記錄當前讀取的位置

if(line!=null)

e.HasMorePages=true;

else

e.HasMorePages=false;

}

  在這里可以完成整個打印任務。把printDocument_PrintPage構造好后,就可以打印和打印預瀏。

?

  二、打印預瀏對話框(PrintPreviewDialog)

  打印預瀏控件是用來顯示一個打印文檔在打印后的效果。在打印預瀏對話框中包含有,打印、縮放、單頁或多頁、關閉等按鈕。對話框如下:

?

?

  打印預瀏對話框沒有太多的屬性,最后通過ShowDialog()調用。上面的實現代碼如下:

?

?

?

?

private void printPreviewBTN_Click(o b j ec t sender, System.EventArgs e)

{

lineReader = new StringReader(richTextBox1.Text);

try

{

PrintPreviewDialog printPreviewDialog1=newPrintPreviewDialog();

printPreviewDialog1.Document=printDocument;

printPreviewDialog1.FormBorderStyle=FormBorderStyle.Fixed3D;

printPreviewDialog1.ShowDialog(this);

}

catch(Exception excep)

{

MessageBox.Show(excep.Message, "打印出錯",MessageBoxButtons.OK, MessageBoxIcon.Error);

return;

}

}

  很簡單的,只要你把PrintDocument_PrintPage()寫好了,這里就很容易了。

?

  三、打印對話框(PrintDialog)

?

  1、打印對話框(PrintDialog)只要有以下屬性:

?

?

AllowPrintToFile 禁止或使用"打印到文件"復選框

AllowSelection 禁止或使用"選定內容"單選框

AllowSomePages 禁止或使用""單選按鈕

Document 從中獲取打印機設置的PrintDocument

PrintToFile 打印到文件"復選框是否選中

ShowHelp 控制是否顯示"幫助"按鈕

ShowNetWork 控制是否顯示"網絡"按鈕

?

  2、效果如下:

?

  3、用如下代碼來實現:

?

?

?

?

  在我們的教程,共講述了文件對話框(FileDialog)、字體對話框(FontDialog),顏色對話框(olorDialog)、打印預瀏對話框(PrintPreviewDialog)、頁面設置(PrintDialog)、打印對話框(PrintDialog),這幾個對話框,其中文件對話框(FileDialog)又有:打開文件對話框(OpenFileDialog)、保存文件對話(SaveFi leDialog)這兩個對話框。有了上述基礎,大家可以很容易的寫出一個簡單的記事本。

?

private void printDialogBTN_Click(o b j e ct 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);

}

}

}

總結

?

?

?

?

?

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/rxzgh/archive/2008/09/27/2988483.aspx

轉載于:https://www.cnblogs.com/java20130723/archive/2012/07/12/3211523.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379521.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【翻譯】eXpressAppFramework QuickStart 業務模型設計(四)—— 實現自定義業務類...

這一講,你將學到如何從頭開始實現業務類。為此,將要實現Department和Position業務類。這些類將被應用到之前實現的Contact類中。你將學到引用對象自動生成用戶界面的基本要素。 在此之前,我建議你去閱讀一下 【翻譯】eXpressAppFramework Qui…

內存重映射

文章目錄1 kmap2 映射內核內存到用戶空間使用remap_pfn_range使用io_remap_pfn_rangemmap文件操作建立VMA和實際物理地址的映射mmap 之前分配 一次性映射mmap 之前分配 Page FaultPage Fault 中分配 映射內核內存有時需要重新映射,無論是從內核到用戶空間還是從內…

math.sqrt 有問題_JavaScript中帶有示例的Math.sqrt()方法

math.sqrt 有問題JavaScript | Math.sqrt()方法 (JavaScript | Math.sqrt() Method) The Math.sqrt() method is inbuilt in JavaScript to find the square root of a number. In this tutorial, we will learn about the sqrt() method with examples. JavaScript中內置了Mat…

標題:移動距離

標題:移動距離 X星球居民小區的樓房全是一樣的,并且按矩陣樣式排列。其樓房的編號為1,2,3… 當排滿一行時,從下一行相鄰的樓往反方向排號。 比如:當小區排號寬度為6時,開始情形如下: 1 2 3 4 5 6 12 11 1…

ISAPI Rewrite 實現簡單url重寫、二級域名重寫

實現步驟: 第一步:下載ISAPI_Rewrite.rar,將Rewrite文件夾和httpd.ini直接放在項目根目錄下面。 第二步:IIS配置,篩選Rewrite文件夾里面的Rewrite.dll文件,如圖: 第三步:在httpd.ini…

用戶登錄

用戶登錄 代碼namespace 用戶登錄 {public partial class Form1 : Form{public Form1(){InitializeComponent();}bool b1, b2, b3, b4, b5, b6;private void button1_Click(object sender, EventArgs e){try{if (b1 && b2 && b3 && b4 && b5 &…

進程上下文和中斷上下文

文章目錄進程的preempt_count變量thread_infopreempt_counthardirq相關softirq相關上下文原文鏈接: https://zhuanlan.zhihu.com/p/88883239進程的preempt_count變量 thread_info 在內核中,上下文的設置和判斷接口可以參考 include/linux/preempt.h 文…

標題:湊算式

標題:湊算式 這個算式中AI代表19的數字,不同的字母代表不同的數字。 比如: 68/3952/714 就是一種解法, 53/1972/486 是另一種解法。 這個算式一共有多少種解法? 注意:你提交應該是個整數,不要…

匯編中imul_JavaScript中帶有示例的Math.imul()方法

匯編中imulJavaScript | Math.imul()方法 (JavaScript | Math.imul() Method) Math.imul() is a function in math library of JavaScript that is used to the 32-bit multiplication of the two values passed to it. It uses C-like semantics to find the multiplication. …

AFTER觸發器與INSTEAD OF觸發器的區別

INSTEAD OF 觸發器用來代替通常的觸發動作,即當對表進行INSERT、UPDATE 或 DELETE 操作時,系統不是直接對表執行這些操作,而是把操作內容交給觸發器,讓觸發器檢查所進行的操作是否正確。如正確才進行相應的操作。因此,…

Linux內存地址管理

文章目錄系統內存布局內核地址的低端和高端內存概念低端內存高端內存地址轉換和MMULinux中的四級分頁模型虛擬地址字段頁表處理將虛擬地址轉換物理地址Linux系統中的每個內存地址都是虛擬的,它們不直接指向任何物理內存地址。每當訪問內存位置時,可以執行…

錄制caf 轉 mp3

編譯需要使用的 lame庫http://www.cocoachina.com/bbs/read.php?tid108237參考的文章http://blog.csdn.net/ysy441088327/article/details/7392842說起來,我一直在找一個音頻轉換成mp3的方法。一年前,我成功編譯出了一個lame for armv7的庫。苦于不會使…

杭電2012-素數判定(C)

Problem Description 對于表達式n^2n41&#xff0c;當n在&#xff08;x,y&#xff09;范圍內取整數值時&#xff08;包括x,y&#xff09;(-39<x<y<50)&#xff0c;判定該表達式的值是否都為素數。 Input 輸入數據有多組&#xff0c;每組占一行&#xff0c;由兩個整數…

math.ceil帶小數點_JavaScript中帶有示例的Math.ceil()方法

math.ceil帶小數點JavaScript | Math.ceil()方法 (JavaScript | Math.ceil() Method) Math.ceil() is a function in math library of JavaScript that is used to round up the number passed to the function. The method will return the nearest integer value indeed is g…

開發記要 詭異的變量

告別繁體文盲,從寫blog開始 Variable命名很重要,有多重要,看看.net和java的加密就知道, 都是把variable改到一塌糊塗,你想看看都沒門. 但是這幾天看遺留系統的代碼,真是大開眼界。 我一直以為別人寫a,b,c,d這些單字節variable已經很過分。直到我看到以下這幾個&#xff0…

排序算法---快速排序、堆排序、冒泡排序

排序算法1 快速排序代碼實現stdlib庫快排2 堆排序堆排序的基本思想如何構造一個大頂堆排序3 冒泡排序1 快速排序 文章原地址&#xff1a;https://blog.csdn.net/morewindows/article/details/6684558 快速排序的平均時間復雜度是0(NlogN)&#xff0c;它采用了一種分治的策略&a…

CSS Hack 匯總快查

*:lang(zh) select {font:12px !important;} /*FF的專用*/ select:empty {font:12px !important;} /*safari可見*/ 這里select是選擇符&#xff0c;根據情況更換。第二句是MAC上safari瀏覽器獨有的。 僅IE7識別 *html {…} 當面臨需要只針對IE7做樣式的時候就可以采用這個HACK…

杭電2013-蟠桃記(C++)

Problem Description 喜歡西游記的同學肯定都知道悟空偷吃蟠桃的故事&#xff0c;你們一定都覺得這猴子太鬧騰了&#xff0c;其實你們是有所不知&#xff1a;悟空是在研究一個數學問題&#xff01; 什么問題&#xff1f;他研究的問題是蟠桃一共有多少個&#xff01; 不過&#…

c#中重載單目運算符-_C#程序重載二進制運算符(-,*,/)

c#中重載單目運算符-Here, we will design overloaded methods for binary operators: minus, multiply and divide. In the below program, we will create a Calculator class with data member val. 在這里&#xff0c;我們將為二進制運算符設計重載方法&#xff1a;減&…

項目總結:華南師范大學校園開發教育android客戶端總結

忽略之前小打小鬧&#xff0c;這個項目算是我的第一個項目--SCNU的網絡公選課的android版本的客戶端。項目是從5月中旬開始的&#xff0c;中間經歷了幾個星期的復習考試時間&#xff0c;到現在可以說是完工了吧&#xff08;或許還有寫細節要修改&#xff09;。這個項目帶給我蠻…