• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            C++ Programmer's Cookbook

            {C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}

            個人整理-C#編程實用小技巧- -

            個人整理-C#編程實用小技巧- -

                                                  

            01、在C#應(yīng)用程序中如何在運行時將窗口最大化?

            02、利用C#編寫Web下的郵件發(fā)送程序

            03、C#DOS控制臺程序連接SQLServer數(shù)據(jù)庫的方法

            04、C#中ListView的簡單使用說明

            05、C#中加載圖片與讀取圖片上的像素點方法

            06、窗體間傳遞復(fù)雜數(shù)據(jù)

            07、如何在.net的應(yīng)用程序運行其它的EXE文件?

            08、如何檢測當(dāng)前操作系統(tǒng)?

            09、如何獲取正在運行程序的路徑?

            10、如何查看電腦中已經(jīng)安裝的所有程序集?

            11、如何用System.Windows.Forms.Application.CompanyName設(shè)置公司名稱?

            12、如果用戶的電腦沒有安裝.NET運行框架,是否可以運行.NET的程序?

            13、如何獲取本地的IP地址?

            14、如何確保在C#中只有一個程序(實例)運行?

            15、如何把所有的系統(tǒng)中正在運行的所有進程顯示出來呢?

            16、如何列出所有正在運行的應(yīng)用程序呢?

            01、在C#應(yīng)用程序中如何在運行時將窗口最大化?(TOP)
              可以使用FormWindowState 枚舉,代碼如下所示:
              private void Form1_Load(object sender, System.EventArgs e)
                {
                     //實現(xiàn)C#打開后的窗口最大化;
                     this.WindowState = FormWindowState.Maximized;
                }

            02、利用C#編寫Web下的郵件發(fā)送程序(TOP)
              創(chuàng)建一個C#項目中的APS.NET Web應(yīng)用程序,命名為EmailPage;
              按下圖所示添加各控件,并對各控件進行命名。注意:要將HTML控件FileField設(shè)置為服務(wù)器控件運行。


              查看WebForm1.aspx的HTML源代碼,修改標(biāo)簽,添加屬性設(shè)置encType="multipart/form-data";
              在C#代碼中添加對命名空間System.Web.Mail的引用(需要使用該名稱空間下的MailMessage類和SmptMail類),MailMessage類對象用來設(shè)定要發(fā)送郵件的相關(guān)信息,如收件人,發(fā)件人,主題,內(nèi)容,優(yōu)先級,格式以及附件;使用SmptMail類的Send方法將MailMessage對象發(fā)送出去。
              注:要在C:\Inetpub\wwwroot目錄下創(chuàng)建一個temp文件夾,用于將酵文件上傳到Web臨時目錄下,然后將服務(wù)器上的文件路徑賦給MailMessage對象的Attachments屬性即可。
              “發(fā)送”按鈕的事件如下:
              private void btnSend_Click(object sender, System.EventArgs e)
              {
               //創(chuàng)建一個MailMessage對象
               MailMessage aMail = new MailMessage();
               //收信人地址
               aMail.To = txtTo.Text ;
               //發(fā)信人地址
               aMail.From = txtFrom.Text ;
               //主題
               aMail.Subject = txtSubject.Text;
               //正文
               aMail.Body = txtBody.Text ;
               //優(yōu)先級
               aMail.Priority = (MailPriority)ddPriority.SelectedIndex ;
               //正文格式
               aMail.BodyFormat = (MailFormat)ddBodyFormat.SelectedIndex ;
               ddPriority.SelectedIndex = 1;
               ddBodyFormat.SelectedIndex = 0;
               
               if (File1.PostedFile.FileName  != "" )
               {
                //上傳文件的文件名(含完整路徑)
                string fileName = File1.PostedFile.FileName;
                fileName = fileName.Substring (fileName.LastIndexOf (@"\"));
                //使用SaveAs方法,將文件保存在項目路徑\temp目錄下,
                //需要在項目路徑下創(chuàng)建temp目錄
                fileName = Server.MapPath(@"\temp\" + fileName);
                //要在C:\Inetpub\wwwroot文件夾下創(chuàng)建temp文件夾用于存放臨時發(fā)送的文件
                File1.PostedFile.SaveAs(fileName);
                //添加附件
                aMail.Attachments.Add(new MailAttachment(fileName));
               }
               
               string result = "";
               try
               {
                //發(fā)送郵件
                SmtpMail.Send(aMail);
                result = "Email 發(fā)送成功!";
               }
               catch(Exception ex)
               {
                result = "Email 發(fā)送失敗。" + ex.Message ;
               }
               Response.Write (" ");
              }

            03、C#DOS控制臺程序連接SQLServer數(shù)據(jù)庫的方法(TOP)

            ①、建立一個C#的DOS控制臺應(yīng)用程序;
            ②、添加命名空間:using System.Data.SqlClient;;
            ③、連接到數(shù)據(jù)源,通過創(chuàng)建一個使用連接字符串的連接對象來完成:
            SqlConnection connection = new SqlConnection(@"Data Source=MySER;Integrated Security=SSPI;Initial Catalog=pubs");
              其中的MySER是安裝了SQLServer的服務(wù)器名;pubs是SQLServer上的數(shù)據(jù)庫名。
            ④、打開連接對象,建立到數(shù)據(jù)庫的連接:
            connection.Open();
            ⑤、創(chuàng)建對象命令,并給它提供SQL命令(從TN_RP表中選取 Ccname, MI_SQL_X,MI_SQL_Y 字段):
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "SELECT Ccname, MI_SQL_X,MI_SQL_Y from TN_RP";
            ⑥、使用DataReader以只讀方式獲取數(shù)據(jù)結(jié)果:
            SqlDataReader reader = command.ExecuteReader();
            ⑦、從DataReader中獲取數(shù)據(jù):
            while(reader.Read())
            {
             Console.WriteLine("{0}{1}\t{2}",reader["Ccname"],reader["MI_SQL_X"],reader["MI_SQL_Y"]);
            }
            ⑧、關(guān)閉DataReader和SqlConnection。

            04、C#中ListView的簡單使用說明(TOP)
              在C#工程中添加一個ListView控件,控件名稱為listView1。
              分別設(shè)置其屬性:View為Detail,然后為其Column增加項。
              添加List項的代碼部分如下:
            while(reader.Read())
            {
                string[] subItem={i.ToString(),reader["Ccname"].ToString(),reader["MI_SQL_X"].ToString(),reader["MI_SQL_Y"].ToString()};
                //定義每個項的子串;這里是每個列表項有四個條目;
                ListViewItem item = new ListViewItem(subItem);
                listView1.Items.Insert(i,item);
                i++;
            }
              讀取的方法是:
            private void button1_Click(object sender, System.EventArgs e)
            {
               MessageBox.Show(listView1.SelectedItems[0].SubItems[1].Text.ToString());
               //SelectItems[0]是所選項的第一個(因為有MutiSelect屬性),SubItems[1]是所選項的第二個列的值
            }

            05、C#中加載圖片與讀取圖片上的像素點方法(TOP)
            (1)在.NET中創(chuàng)建一個窗體,加入pictureBox控件。設(shè)置其Image為空,SizeMode屬性設(shè)為AutoSize;
            (2)加入一個button控件,用于打開圖片文件;
            (3)加入三個textBox控件,用于表示RGB三個顏色的值。
            (4)定義一個私有變量pick為布爾值,來表示是否拾取圖片上的顏色。并在Form1_Load中將其設(shè)置為false;再加入一個public Bitmap myBitmap用來進行函間的訪問。
            (5)為button控件增加click事件,該事件主要是完成讀入文件和對pictureBox控件的初始化:
               OpenFileDialog of = new OpenFileDialog();
               of.Filter = "JPG圖像(*.jpg)|*.jpg|BMP圖像(*.bmp)|*.bmp|所有文件(*.*)|*.*";
               of.FilterIndex = 0;
               of.ShowDialog();
               String filename = of.FileName.ToString();

               //在此處加載一個新的圖片。
               this.myBitmap = new Bitmap(filename);
               // Stretches the image to fit the pictureBox.
               pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
               Bitmap myImage = this.myBitmap;//new Bitmap(fileToDisplay);
               //pictureBox1.ClientSize = new Size(xSize, ySize);
               pictureBox1.Image = (Image) myImage ;
               //設(shè)置當(dāng)前窗體與圖片大小相當(dāng)
               this.ClientSize = new Size(pictureBox1.Width+20,pictureBox1.Height+60);
               pick = true;//設(shè)為TRUE可以開始讀取像素點。
            (6)為pictureBox控件增加mousemove事件:
               if (pick)
               {
                Color pixelColor = this.myBitmap.GetPixel(e.X,e.Y);
                //pixelColor = Color.FromArgb(255,0,0);//可以以此方法對COLOR變量進行RGB值設(shè)置。
                textBox1.Text = pixelColor.R.ToString();
                textBox2.Text = pixelColor.G.ToString();
                textBox3.Text = pixelColor.B.ToString();
               }

            06、窗體間傳遞復(fù)雜數(shù)據(jù)(TOP)
            源代碼下載請點這里
              在設(shè)計窗體程序時往往需要相互調(diào)用的窗體間傳遞復(fù)雜的數(shù)據(jù),有時候甚至需要子窗體修改父窗體的內(nèi)容。前一陣在博客園中看到很多人討論這個問題,在海天一鷗《窗體間傳值和窗體間互操作》的評論中,我看到有這么幾種做法:1)公開一個靜態(tài)變量;2)在子窗體中創(chuàng)建一個公有字段;3)在父窗體中使用委托與事件;4)將子窗體作為父窗體成員。
              這些辦法我感覺都不是特別好,會導(dǎo)致父窗體與子窗體耦合過于緊密,對任何一個窗體的修改需要重新編譯另外一個窗體。根據(jù)“依賴倒置”的原則,通過引入一個結(jié)果對象,就可以避免這種緊耦合,同時也可以傳遞任意復(fù)雜的數(shù)據(jù)。如果需要在子窗體中改變父窗體狀態(tài),也可以在這個結(jié)果對象中定義委托與事件來達到目的。我在這里給出我的解決方案。
              首先定義一個結(jié)果對象,用來存放子窗體返回的結(jié)果。同時定義一些事件,可以讓子窗體修改父窗體的狀態(tài)。代碼如下:
            usingSystem;
            namespaceWinParam
            {
              publicdelegatevoidTextChangedHandler(strings);
              publicclasscResult
              {
                publicstringResult1="";
                publicstringResult2="";
                publiceventTextChangedHandlerTextChanged;
                publicvoidChangeText(strings)
                {
                  if(TextChanged!=null)
                    TextChanged(s);
                }
              }
            }
              添加一子窗體構(gòu)造函數(shù),允許接收一結(jié)果對象:
            privatecResultr;
            publicfrmChild(cResultr):this()
            {
              this.r=r;
            }
              在父窗體中創(chuàng)建子窗體,并訂閱cResult事件:
            privatevoidbtnCallChild_Click(objectsender,System.EventArgse)
            {
              cResultr=newcResult();
              r.TextChanged+=newTextChangedHandler(this.EventResultChanged);
              frmChildfc=newfrmChild(r);
              fc.ShowDialog();
              txtCallResult.Text="TheResultis: "+r.Result1+" "+r.Result2;
            }
            privatevoidEventResultChanged(strings)
            {
              txtEventResult.Text=s;
            }
              這樣確保父窗體知道子窗體,而子窗體不知道父窗體。父窗體改變后不需要重新編譯子窗體。同時兩個窗體都依賴于結(jié)果對象,結(jié)果對象的穩(wěn)定性也決定了父窗體與子窗體關(guān)系的穩(wěn)定性。下面是程序運行結(jié)果:
              注:提供的代碼僅僅是功能演示,如果實際使用需要添加一些額外輔助代碼(對象釋放、取消事件訂閱等)。

            07、如何在.net的應(yīng)用程序運行其它的EXE文件?
            解答:主要應(yīng)用System.Diagnostics名字空間中的Process類
            主要代碼:
                Process proc = new Process();
                proc.StartInfo.FileName = @"D:\Program Files\Foxmail\Foxmail.exe"; //可以用絕對路徑
                proc.StartInfo.Arguments = "";
                proc.Start();

            08、如何檢測當(dāng)前操作系統(tǒng)?
            解答:應(yīng)用System名字空間中的Environment類
            主要代碼:
                string versionText = Environment.OSVersion.Version.ToString();

            09、如何獲取正在運行程序的路徑?
            解答:調(diào)用Application類中的ExecutablePath靜態(tài)成員獲取路徑
            主要代碼:
                textBox1.Text = Application.ExecutablePath;

            10、如何查看電腦中已經(jīng)安裝的所有程序集?
            解答:.Net Framework把所有的程序集安裝在系統(tǒng)安裝盤\winnt\Assembly(隱含)目錄下,查看屬性可以看到該程序集的所有詳細資料。

            11、如何用System.Windows.Forms.Application.CompanyName設(shè)置公司名稱?
            解答:在Assembly中設(shè)置,VS.Net的開發(fā)環(huán)境中是在 AssemblyInfo.cs(vb)的文件中設(shè)置的,打看文件可以
            公司信息和版本等信息
            主要代碼:
                [assembly: AssemblyCompany("天極網(wǎng)蠶蛹-版權(quán)所有")]

            12、如果用戶的電腦沒有安裝.NET運行框架,是否可以運行.NET的程序?
            解答:不可以,必需安裝.NET Framework
            可在下面地址下載
            http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp

            13、如何獲取本地的IP地址?
            解答:在名字空間System.Net中定義了一個類Dns,其中有一個方法GetHostByName(),用來返回IPHostEntry 對象,此對象有一個屬性是AddressList,此屬性是一個IPAddress類型的數(shù)組,包含了計算機此時的所有的IP地址信息,包含了撥號上網(wǎng)得到的臨時分配的IP地址和局域網(wǎng)固定的IP地址
            主要代碼:
                string s="";
                System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
                for (int i = 0; i < addressList.Length; i ++)
                {
                    s += addressList[i].ToString();
                }

            14、如何確保在C#中只有一個程序(實例)運行?
            解答:主要應(yīng)用System.Diagnostics名字空間中的Process類來實現(xiàn),思路,我們在運行程序前,查找進程中是否有同名的進程,同時運行位置也相同程,如是沒有運行該程序,如果有,就將同名的同位置的程序窗口置前.
            主要代碼:
                public static Process RunningInstance()
                {
                    Process current = Process.GetCurrentProcess();
                    Process[] processes = Process.GetProcessesByName (current.ProcessName);
                    //查找相同名稱的進程
                    foreach (Process process in processes)
                    {
                        //忽略當(dāng)前進程
                        if (process.Id != current.Id)
                        {
                            //確認相同進程的程序運行位置是否一樣.
                            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
                            {
                                //Return the other process instance.
                                return process;
                            }
                        }
                    }
                    //No other instance was found, return null.
                    return null;
                } 
             
            15、如何把所有的系統(tǒng)中正在運行的所有進程顯示出來呢?
            解答:用System.Diagnostics名字空間中的Process.GetProcess()靜態(tài)成員
            主要代碼:
                Using System.Diagnostics;
                ...
                foreach ( Process p in Process.GetProcesses() )
                    Console.WriteLine( p ); // string s = p.ToString();

            16、如何列出所有正在運行的應(yīng)用程序呢?
            解答:可有用EnumWindows 函數(shù)將枚舉計算機上的所有現(xiàn)有窗口,但我們用System.Diagnostics名字空間的靜態(tài)函數(shù)Process.GetProcesses()可以避免EnumWindows的互操作性問題。
            主要代碼:
                Using System.Diagnostics;
                ...
                foreach ( Process p in Process.GetProcesses(System.Environment.MachineName) )
                {
                    if( p.MainWindowHandle != IntPtr.Zero)
                    {
                        //顯示用戶程序名
                        Console.WriteLine( p ); // string s = p.ToString();
                    }
                }

            posted on 2005-11-24 09:19 夢在天涯 閱讀(2819) 評論(4)  編輯 收藏 引用 所屬分類: C#/.NET

            評論

            # C#加載圖片問題 2007-08-18 19:55 阿國

            假如我有10張圖片或更多,我想像用imagelist一樣 存在一個集合里 用索引調(diào)用 又不想直接放在程序目錄下讓人看見 我應(yīng)該怎么做  回復(fù)  更多評論   

            # re: 個人整理-C#編程實用小技巧- - 2007-08-19 20:27 夢在天涯

            直接加載到資源里,應(yīng)該就可以不放到目錄下了,應(yīng)該是你說的要求!  回復(fù)  更多評論   

            # re: 個人整理-C#編程實用小技巧- - 2007-10-05 18:18 深圳瑜伽

            國慶快樂哦。。。。。
              回復(fù)  更多評論   

            # re: 個人整理-C#編程實用小技巧- - 2007-10-08 10:47 人才招聘

            上班也快樂^_^  回復(fù)  更多評論   

            公告

            EMail:itech001#126.com

            導(dǎo)航

            統(tǒng)計

            • 隨筆 - 461
            • 文章 - 4
            • 評論 - 746
            • 引用 - 0

            常用鏈接

            隨筆分類

            隨筆檔案

            收藏夾

            Blogs

            c#(csharp)

            C++(cpp)

            Enlish

            Forums(bbs)

            My self

            Often go

            Useful Webs

            Xml/Uml/html

            搜索

            •  

            積分與排名

            • 積分 - 1804434
            • 排名 - 5

            最新評論

            閱讀排行榜

            韩国三级大全久久网站| WWW婷婷AV久久久影片| 久久久久亚洲精品男人的天堂| 久久亚洲精品视频| 久久青青国产| 久久久久无码精品国产不卡| 国产精品热久久毛片| 伊人久久大香线蕉综合热线| 香蕉久久av一区二区三区| 好久久免费视频高清| 久久婷婷五月综合色99啪ak| 色天使久久综合网天天| 久久这里只有精品久久| 久久亚洲精品无码aⅴ大香| 久久精品国产只有精品2020| 精品久久久一二三区| 国产精品成人99久久久久91gav| 中文字幕久久亚洲一区| 91精品观看91久久久久久| 久久综合久久美利坚合众国| 激情久久久久久久久久| 久久超碰97人人做人人爱| 久久人人爽人人爽人人片AV不| 久久青草国产精品一区| 午夜不卡久久精品无码免费| 亚洲欧美精品一区久久中文字幕 | 亚洲国产精品久久| 天天爽天天狠久久久综合麻豆| 久久噜噜久久久精品66| 久久福利青草精品资源站| 日产精品久久久久久久| 伊人久久大香线蕉综合Av| 无码精品久久一区二区三区| 久久精品国产只有精品66| 99久久人人爽亚洲精品美女| 国产成人精品久久二区二区| 性做久久久久久久| 激情伊人五月天久久综合| 99国产欧美精品久久久蜜芽| 国产亚洲精品美女久久久| 久久91精品久久91综合|