99国产精品久久久久久久成人热,色哟哟一区二区在线观看视频,鱼缸,人妻精品久久无码区

首頁 > 熱門提問 > c#界面設(shè)計

c#界面設(shè)計

提問

問題
列表

  • C#怎么實現(xiàn)頁面打印功能?有相應控件嗎?代碼怎么寫?有例子更好,謝謝!

    查看答案>>

  • 用C#編寫設(shè)計一個Windows應用程序,程序中定義一個學生類,

    查看答案>>

  • 求C#窗體程序工具箱各種控件的用處及各屬性的用處

    查看答案>>

  • C# WPF界面設(shè)計,不同按鈕顯示不同的界面,需要新建多個頁面嗎?如何按各自的按鈕顯示各自的頁面。

    查看答案>>

  • C#怎么通過控件名稱找到窗口設(shè)計里對應的控件

    查看答案>>

  • C#如何通過一個按鈕實現(xiàn)窗體界面的中英文切換?

    查看答案>>

  • 請教devexpress的winform界面開發(fā)基本步驟

    查看答案>>

  • 用vs2010做c#的窗口程序,新建了一個程序,這時候是有設(shè)計視圖的(那個即時的窗體視圖),

    查看答案>>

  • c#中兩個數(shù)求和界面設(shè)計及程序編寫

    查看答案>>

  • c++和c#哪個做界面更好?

    查看答案>>

C#怎么實現(xiàn)頁面打印功能?有相應控件嗎?代碼怎么寫?有例子更好,謝謝!

Winform里集成了幾個打印控件:PrintPreviewDialog,PrintDocument,PrintDialog,PageSetupDialog,PrintPreviewControl,看書看資料會把人看暈,實際上打印核心控件只有一個,就是PrintDocument,PrintPreviewDialog也有點用,就是頁面預覽控件,真正開發(fā)中如果需要打印功能,一般會從網(wǎng)上Down現(xiàn)成的控件,如果要自己手動寫,費時又費力,本著學習的態(tài)度,我們需要知道打印是怎么實現(xiàn)的,寫兩個比較常用的打印服務,一個是打印DataTable的,另一個是打印TextBox的。 示例一:以表格形式打印DataTable內(nèi)的數(shù)據(jù)//定義全局變量count,儲存當前打印的行數(shù)int count=0;//定義一個方法,接收一個DataTable類型參數(shù)及PrintDocument的PrintPage事件傳入的參數(shù)e以方便操作private voidPrintTable(DataTable dt, System.Drawing.Printing.PrintPageEventArgse){ //取得對應的Graphics對象 Graphicsg = e.Graphics; //獲得相關(guān)頁面X坐標、Y坐標、打印區(qū)域?qū)挾?、長度 intx = e.PageSettings.Margins.Left; inty = e.PageSettings.Margins.Top; intwidth = e.PageSettings.PaperSize.Width -e.PageSettings.Margins.Left- e.PageSettings.Margins.Right; intheight = e.PageSettings.PaperSize.Height -e.PageSettings.Margins.Top -e.PageSettings.Margins.Bottom; //定義打印字體 Fontfont = new Font("宋體",15); //rowCount是除去打印過的行數(shù)后剩下的行數(shù) introwCount = dt.Rows.Count-count; //maxPageRow是當前設(shè)置下該頁面可以打印的最大行數(shù) intmaxPageRow=height/(int)font.GetHeight(); //因為是表格,先畫一條水平直線 g.DrawLine(newPen(Brushes.Black, 1), new Point(x, y), new Point(x +(dt.Columns.Count) * 135, y)); //再畫出表格各列的列標題 for(int i = 0; i < dt.Columns.Count; i++) { stringhead = dt.Columns[i].ColumnName; g.DrawString(head,font, Brushes.Black, x + i * 135, y); } //畫完標題,再畫一條直線 g.DrawLine(newPen(Brushes.Black, 1), new Point(x, y + (int)font.GetHeight()), newPoint(x + (dt.Columns.Count) * 135, y +(int)font.GetHeight())); //判斷,如果剩下的行數(shù)小于可打印的最大行數(shù),則執(zhí)行下列代碼 if(maxPageRow >=rowCount) { //當前行數(shù)小于Table內(nèi)總行數(shù)時,循環(huán) while(count < dt.Rows.Count) { //內(nèi)循環(huán)打印Table內(nèi)行數(shù)據(jù) intcolumnCount = 0; while(columnCount < dt.Columns.Count) { stringtemp = dt.Rows[count][columnCount].ToString(); //打印每個單元格內(nèi)的數(shù)據(jù) g.DrawString(temp,font, Brushes.Black, x + columnCount * 135, y + (count %maxPageRow) * (int)font.GetHeight() +(int)font.GetHeight()); //打印完一行后,繼續(xù)打印一條直線 g.DrawLine(newPen(Brushes.Black, 1), new Point(x, y + (count % maxPageRow) *(int)font.GetHeight() + 2 * (int)font.GetHeight()), new Point(x +(dt.Columns.Count) * 135, y + (count % maxPageRow) *(int)font.GetHeight() + 2 * (int)font.GetHeight())); columnCount++; } count++; } //所有數(shù)據(jù)打印完畢后,打印垂直直線 for (int i = 0; i <= dt.Columns.Count; i++) { g.DrawLine(newPen(Brushes.Black), new Point(x + i * 135, y), new Point(x + i *135, y + rowCount * (int)font.GetHeight() +(int)font.GetHeight())); } } //判斷,如果剩下的行數(shù)大于可打印的最大行數(shù),則執(zhí)行下列代碼 else { do { //與上面類似,注意下面while的條件 intcolumnCount = 0; while(columnCount < dt.Columns.Count) { stringtemp = dt.Rows[count][columnCount].ToString(); //打印每個單元格 g.DrawString(temp,font, Brushes.Black, x + columnCount * 135, y + (count %maxPageRow) * (int)font.GetHeight() +(int)font.GetHeight()); //打印水平直線 g.DrawLine(newPen(Brushes.Black, 1), new Point(x, y + (count % maxPageRow) *(int)font.GetHeight() + 2 * (int)font.GetHeight()), new Point(x +(dt.Columns.Count)*135, y + (count % maxPageRow) *(int)font.GetHeight() + 2 * (int)font.GetHeight())); columnCount++; } count++; }while ((count % maxPageRow >0)); //打印垂直直線 for(int i = 0; i <= dt.Columns.Count;i++ ) { g.DrawLine(newPen(Brushes.Black), new Point(x + i * 135, y), new Point(x + i *135, y + height + (int)font.GetHeight())); } } //指定HasMorePages值,如果頁面最大行數(shù)小于剩下的行數(shù),則返回true(還有),否則返回false if(maxPageRow<rowCount) { e.HasMorePages= true; } else { e.HasMorePages= false; count= 0; } } 奇長無比,打印的原理就是畫,所有東西都是畫出來的,大體思路就是這樣,其他的無非就是計算跟調(diào)整間距問題,多試幾次不難,我覺得最難的部分是循環(huán)取值及設(shè)置HasMorePages屬性,PrintDocument的PrintPage方法是打印完一頁調(diào)用一次,因此當自己做打印設(shè)置時,需要清楚的知道哪些變量需要儲存為全局變量以方便記錄打印位置,HasMorePages屬性也需要注意,是不是只需要一個條件就可以指定其值,很多情況下需要多個條件同時滿足,另外對畫表格這種事情來說,前幾頁跟最后一頁while里條件寫法肯定是不同的,寫一起就亂套了,最后,在給HasMorePages設(shè)置為false后,不要忘記把你的全局變量恢復初始值,否則連點兩下打印預覽就沒數(shù)據(jù)了,以上是A4大小,如果只實現(xiàn)簡單打印,這樣足夠了,如果設(shè)計到調(diào)整頁面,設(shè)置字體等等,抱歉,做不了,這就需要網(wǎng)上DOWN現(xiàn)成的了。下一個說說TextBox里的文本打印。 示例二:文本打印//設(shè)置全局變量保存截取字符串位置int sub=0;private void printText(stringtext, System.Drawing.Printing.PrintPageEventArgs e) { //取得Graphics實例 Graphics g = e.Graphics; //獲得相關(guān)點坐標、長度、寬度 int x = e.PageSettings.Margins.Left; int y = e.PageSettings.Margins.Right; int width =e.PageSettings.PaperSize.Width-e.PageSettings.Margins.Left-e.PageSettings.Margins.Right; int height =e.PageSettings.PaperSize.Height-e.PageSettings.Margins.Top-e.PageSettings.Margins.Bottom; //設(shè)置字體 Font font=new Font("宋體",15); //這個方法后面講 g.MeasureString(text.Substring(sub), font, new SizeF(width,height-10), new StringFormat(), out charnum, out line); //打印string g.DrawString(text.Substring(sub), font, Brushes.Black, newRectangleF(x, y, width, height), newStringFormat()); //設(shè)置截取位置 sub += charnum; //設(shè)置HasMorePage屬性 if (sub < this.txtText.Text.Length) { e.HasMorePages = true; } else { e.HasMorePages = false; sub=0; } } 注意問題有這么幾點,MeasureString方法單獨拿出來說,此方法的通俗理解就是,把一個字符串按照指定的矩形區(qū)域、字符串格式、字體選取,并在選取后將字符數(shù)量,所需行數(shù)保存在兩個outint變量中,第一個參數(shù),需要操作的字符串;第二個,字體;第三個,區(qū)域;第四個,字符串的格式化樣式;第五個,字符個數(shù);第六個,所需行數(shù)。注意的是兩個outint類型的參數(shù),這里跟ref類型差不多,當傳遞參數(shù)的時候,實際傳遞的是參數(shù)的地址,因此在方法內(nèi)部對參數(shù)做了修改之后,會反應到源數(shù)據(jù)上,因此在執(zhí)行完這個方法后,你所傳遞進來的兩個參數(shù)已經(jīng)保存了相關(guān)信息。DrawString方法也使用了其中一個帶有RectangleF參數(shù)的重載方法,目的是與MeasureString相吻合,注意我劃線幾個地方的寫法,注意MeasureString中第一個參數(shù)string同樣需要截取。 兩個例子說完了,下面說說怎么調(diào)用打印方法://打印預覽private voidbutton2_Click(object sender, EventArgs e) { //注意指定其Document屬性 this.printPreviewDialog1.Document = this.printDocument1; this.printPreviewDialog1.ShowDialog(); } //打印 private voidbutton1_Click(object sender, EventArgs e) { //同樣注意指定Document屬性 this.printDialog1.Document = this.printDocument1; if (this.printDialog1.ShowDialog() == DialogResult.OK) { //觸發(fā)PrintDocument的PrintPage事件 this.printDocument1.Print(); } }
7 有幫助? 展開

用C#編寫設(shè)計一個Windows應用程序,程序中定義一個學生類,

這些數(shù)據(jù)處理要與數(shù)據(jù)庫配合才能更好的實現(xiàn)。
1 有幫助 展開

求C#窗體程序工具箱各種控件的用處及各屬性的用處

打開VS,然后鼠標點擊toolbox那里,再然后摁F1,就可以轉(zhuǎn)到那個官方幫助手冊了http://msdn.microsoft.com/en-us/library/2381cd09(v=vs.110).aspx
1 有幫助? 展開

C# WPF界面設(shè)計,不同按鈕顯示不同的界面,需要新建多個頁面嗎?如何按各自的按鈕顯示各自的頁面。

跳轉(zhuǎn)不需要。你應該知道UserControl 再了解一下ContentControl控件就知道了。
3 有幫助? 展開

C#怎么通過控件名稱找到窗口設(shè)計里對應的控件

父控件.Controls["名字"]就可以找到注意一定要是直接父級如果要找嵌套的子控件,那么需要遞歸
0 有幫助? 展開

C#如何通過一個按鈕實現(xiàn)窗體界面的中英文切換?

一、窗體的國際化解決方案新建一個WinForm解決方案后,選擇主窗體,右擊查看屬性,找到Localizable屬性,將其置為True,然后找到Language屬性,選擇你需要切換的語言,比如英語(美國)、中文(簡體,中國)等。此時根據(jù)實際情況設(shè)計該Language下的窗體樣式及語言。 圖1 Form的屬性設(shè)置 圖2 根據(jù)選擇的語言,自動生成的資源文件二、使用CultureInfo類實現(xiàn)國際化解決方案CultureInfo 類包含區(qū)域性特定的信息,例如語言、國家/地區(qū)、日歷以及區(qū)域性約定。  using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms;  namespace LocationForm {     static class Program     {         /// <summary>         /// 應用程序的主入口點。         /// </summary>         [STAThread]         static void Main()         {             Application.EnableVisualStyles();             Application.SetCompatibleTextRenderingDefault(false);             //System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");             System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");             Application.Run(new Form1());         }     } } 三:實現(xiàn)效果 官方參考文獻:http://msdn.microsoft.com/zh-cn/library/h6270d0z.aspx另外您可能是需要動態(tài)切換語言的吧.接著往下看.在 Visual Studio 的設(shè)計視圖中,如果在 Properties 窗口中改變了程序的默認界面語言(Language),我們會注意到無論是工程還是窗體對應的 .Designer.cs 文件都會有顯著的改變。比如,我們創(chuàng)建一個叫 MyForm 的 form,并且添加一個叫 MyButton 的按鈕。在改變窗體 Properties 中的 Language 屬性之前, .Designer.cs 代碼文件中的 InitializeComponent 方法的內(nèi)容大致如下:private void InitializeComponent(){this.myButton = new System.Windows.Forms.Button();this.SuspendLayout();//// myButton//this.myButton.Location = new System.Drawing.Point(100, 200);this.myButton.Name = "myButton";this.myButton.Size = new System.Drawing.Size(75, 23);this.myButton.TabIndex = 0;this.myButton.Text = "My Button";this.myButton.UseVisualStyleBackColor = true;//// myForm//this.ClientSize = new System.Drawing.Size(292, 273);this.Controls.Add(this.myButton);this.Name = "MyForm";this.Text = "My Form";this.ResumeLayout(false);}而在改變了窗體 Properties 中的 Language 屬性之后,工程中除了默認的 .resx 文件之外,還會自動添加一個 .zh-CHS.resx 文件(假設(shè)我們將 Language 改變?yōu)?Chinese (Simplified))。另外,.Designer.cs 文件中的 InitializeComponent 方法也會改變成:private void InitializeComponent(){System.ComponentModel.ComponentResourceManager resources= new System.ComponentModel.ComponentResourceManager(typeof(MyForm));this.myButton = new System.Windows.Forms.Button();this.SuspendLayout();//// myButton//this.myButton.AccessibleDescription = null;this.myButton.AccessibleName = null;resources.ApplyResources(this.myButton, "myButton");this.myButton.BackgroundImage = null;this.myButton.Font = null;this.myButton.Name = "myButton";this.myButton.UseVisualStyleBackColor = true;//// myForm//this.AccessibleDescription = null;this.AccessibleName = null;resources.ApplyResources(this, "$this");this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.BackgroundImage = null;this.Controls.Add(this.myButton);this.Font = null;this.Icon = null;this.Name = "myForm";this.ResumeLayout(false);}我們注意到改變 Language 屬性之后,代碼的主要變化有:ComponentResourceManager resources = new ComponentResourceManager(typeof(MyForm));resources.ApplyResources(this.myButton, "myButton"); resources.ApplyResources(this, "$this");另外,設(shè)置控件屬性(比如顯示文字 Text,控件大小 Size,顯示位置 Location 等)的代碼都沒有了。也就是說設(shè)置控件屬性的代碼都是由 resources.ApplyResource 方法來完成的。那么在我們想改變 WinForm 程序的界面顯示語言的時候,能不能直接調(diào)用 ApplyResources 方法呢?答案是肯定的。為 myButton 添加 Click 事件的事件處理函數(shù):private void myButton_Click(object sender, EventArgs e){int currentLcid = Thread.CurrentThread.CurrentUICulture.LCID;currentLcid = (currentLcid == 2052) ? 1033 : 2052; // Changes the CurrentUICulture property before changing the resources that are loaded for the win-form.Thread.CurrentThread.CurrentUICulture = new CultureInfo(currentLcid); // Reapplies resources.ComponentResourceManager resources = new ComponentResourceManager(typeof(MyForm));resources.ApplyResources(myButton, "myButton");resources.ApplyResources(this, "$this");}
8 有幫助 展開

請教devexpress的winform界面開發(fā)基本步驟

安裝好DevExpress后,開發(fā)DevExpress窗體應用的步驟如下:1)利用DevExpress提供的向?qū)0?,建立DevExpress的Winform項目2)建立好項目后,可以看到DevExpress提供的各種窗體控件3)向窗體拖入一個命令按鈕SimpleButton,將其Text屬性修改“關(guān)閉”4)鼠標雙擊命令按鈕,編寫后臺代碼using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DXApplication3 {     public partial class Form1 : DevExpress.XtraEditors.XtraForm     {         public Form1()         {             InitializeComponent();         }         private void simpleButton1_Click(object sender, EventArgs e)         {             // 關(guān)閉窗口             this.Close();         }     } }5)運行,顯示DevExpress風格的窗體。單擊“關(guān)閉”可以關(guān)閉窗口
0 有幫助 展開

用vs2010做c#的窗口程序,新建了一個程序,這時候是有設(shè)計視圖的(那個即時的窗體視圖),

打開窗體 就顯示設(shè)計視圖 如果沒有可以點擊視圖--》設(shè)計器 或者shift+f7
0 有幫助? 展開

c#中兩個數(shù)求和界面設(shè)計及程序編寫

拖三個Textbox和一個Button雙擊Button,在事件里面添加private void button1_Click(object sender, EventArgs e){   textBox3.Text = (Decimal.Parse(textBox1.Text) + Decimal.Parse(textBox2.Text)).ToString("G");}如滿意請采納,謝謝。
0 有幫助 展開

c++和c#哪個做界面更好?

  1. C++的代碼錯誤容易引起安全問題,造成內(nèi)存泄漏,運行出錯。C#的代碼錯誤容易引起性能問題。如果追求性能,用C++,如果追求安全,用C#?! ?. C++的開發(fā)難度高,開發(fā)周期較長,但是運行效率高;C#的開發(fā)難度低,開發(fā)效率高,運行效率低;  3. C++注重實現(xiàn)功能,只要時間充裕,可以實現(xiàn)非常強大的功能;C#更加注重軟件工程的應用,各種設(shè)計模式的使用,面向?qū)ο?,是現(xiàn)代軟件工程的思想體現(xiàn)。適合企業(yè)內(nèi)高效的開發(fā)模式;  4. C++的MFC界面編程難度較高,美化界面需要大量代碼的支持。C#的WPF的界面編程很簡單,界面代碼與程序代碼分開,界面可使用可視化設(shè)計程序,如Expression Blend設(shè)計?! ?. C++對串口,網(wǎng)絡TCP,數(shù)據(jù)庫方便的編程都支持,但是沒有現(xiàn)成的完整類庫調(diào)用,需要大量代碼支持。 C#中這些都已經(jīng)有類庫,直接調(diào)用即可。代碼量少很多?! ?. C++打造界面像使用畫筆畫圖,想怎么畫就怎么畫,結(jié)果取決于畫家的功力;C#打造界面像使用Photoshop畫圖,不會畫畫的人也能畫出一些精美圖片來。
1 有幫助? 展開
img

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動力姐姐微信

img
img

TOP