色婷婷基地,国产手机在线ΑⅤ片无码观看,日本乱人伦片中文三区,亚洲А∨天堂2019在线无码

首頁(yè) > 熱門提問(wèn) > c#界面設(shè)計(jì)

c#界面設(shè)計(jì)

提問(wèn)

問(wèn)題
列表

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

    查看答案>>

  • 用C#編寫設(shè)計(jì)一個(gè)Windows應(yīng)用程序,程序中定義一個(gè)學(xué)生類,

    查看答案>>

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

    查看答案>>

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

    查看答案>>

  • C#怎么通過(guò)控件名稱找到窗口設(shè)計(jì)里對(duì)應(yīng)的控件

    查看答案>>

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

    查看答案>>

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

    查看答案>>

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

    查看答案>>

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

    查看答案>>

  • c++和c#哪個(gè)做界面更好?

    查看答案>>

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

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

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

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

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

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

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

C#怎么通過(guò)控件名稱找到窗口設(shè)計(jì)里對(duì)應(yīng)的控件

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

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

一、窗體的國(guó)際化解決方案新建一個(gè)WinForm解決方案后,選擇主窗體,右擊查看屬性,找到Localizable屬性,將其置為True,然后找到Language屬性,選擇你需要切換的語(yǔ)言,比如英語(yǔ)(美國(guó))、中文(簡(jiǎn)體,中國(guó))等。此時(shí)根據(jù)實(shí)際情況設(shè)計(jì)該Language下的窗體樣式及語(yǔ)言。 圖1 Form的屬性設(shè)置 圖2 根據(jù)選擇的語(yǔ)言,自動(dòng)生成的資源文件二、使用CultureInfo類實(shí)現(xiàn)國(guó)際化解決方案CultureInfo 類包含區(qū)域性特定的信息,例如語(yǔ)言、國(guó)家/地區(qū)、日歷以及區(qū)域性約定。  using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms;  namespace LocationForm {     static class Program     {         /// <summary>         /// 應(yīng)用程序的主入口點(diǎn)。         /// </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());         }     } } 三:實(shí)現(xiàn)效果 官方參考文獻(xiàn):http://msdn.microsoft.com/zh-cn/library/h6270d0z.aspx另外您可能是需要?jiǎng)討B(tài)切換語(yǔ)言的吧.接著往下看.在 Visual Studio 的設(shè)計(jì)視圖中,如果在 Properties 窗口中改變了程序的默認(rèn)界面語(yǔ)言(Language),我們會(huì)注意到無(wú)論是工程還是窗體對(duì)應(yīng)的 .Designer.cs 文件都會(huì)有顯著的改變。比如,我們創(chuàng)建一個(gè)叫 MyForm 的 form,并且添加一個(gè)叫 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 屬性之后,工程中除了默認(rèn)的 .resx 文件之外,還會(huì)自動(dòng)添加一個(gè) .zh-CHS.resx 文件(假設(shè)我們將 Language 改變?yōu)?Chinese (Simplified))。另外,.Designer.cs 文件中的 InitializeComponent 方法也會(huì)改變成: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 等)的代碼都沒(méi)有了。也就是說(shuō)設(shè)置控件屬性的代碼都是由 resources.ApplyResource 方法來(lái)完成的。那么在我們想改變 WinForm 程序的界面顯示語(yǔ)言的時(shí)候,能不能直接調(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 有幫助 展開

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

安裝好DevExpress后,開發(fā)DevExpress窗體應(yīng)用的步驟如下:1)利用DevExpress提供的向?qū)0?,建立DevExpress的Winform項(xiàng)目2)建立好項(xiàng)目后,可以看到DevExpress提供的各種窗體控件3)向窗體拖入一個(gè)命令按鈕SimpleButton,將其Text屬性修改“關(guān)閉”4)鼠標(biāo)雙擊命令按鈕,編寫后臺(tái)代碼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)運(yùn)行,顯示DevExpress風(fēng)格的窗體。單擊“關(guān)閉”可以關(guān)閉窗口
0 有幫助? 展開

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

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

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

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

c++和c#哪個(gè)做界面更好?

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

在線咨詢

建站在線咨詢

img

微信咨詢

掃一掃添加
動(dòng)力姐姐微信

img
img

TOP