none
<拜託大大們幫幫我 急>程式的合併問題 剩下幾天要教拜託大大幫幫我看。 RRS feed

  • 問題

  • 拜託大家幫幫我。感恩感恩~     我這裡有原始的程式碼,請大大們幫幫我 看要加我ㄐㄐ通或給我您的e-mail我傳給您唷!!   拜託了。

    我說的軟體就是:Office 2003 新增的 MODI 提供的 OCR

    我的問題是用原有的OCR文字辨識軟體去改寫,原有的OCR文字辨識他只能辨識出一張圖片裡的字,而我要改寫的是設個資料夾裡面放十張圖片讓他去找尋這10圖片裡是否有相同的字,有就抓取出來,而我已經寫出來資料夾的程式了,我也把比對的程式寫出來了,但我不知道要怎麼放進原始程式裡做執行,這是我的盲點拜託大大們幫幫我唷!!

    下面ㄉ是我自己寫的程式。

    ---------------------------------------------------------------------------------
    //設新資料夾,名稱以captured命名.這部份是以為底圖.
         InitializeComponent();
         //Bitmap d = new Bitmap(pictureBox1.Width, pictureBox1.Height);
         Bitmap d = (Bitmap)Bitmap.FromFile("D:\\captured\\captured1.bmp", false);
         //t = false;

    ------------------------------------------------------------------------------
    //以下是設一個FOR迴圈抓圖,第一張我要做基準的圖檔到第N張的圖檔及資料夾
    m_Bitmap = (Bitmap)Bitmap.FromFile("D:\\captured\\captured1.bmp", false);

      for (int j = 1; j < 11; j++)
    {
    m_Bitmap2 = (Bitmap)Bitmap.FromFile("D:\\captured\\captured" + j.ToString() + ".bmp");
    this.AutoScroll = true;
    this.AutoScrollMinSize = new Size((int)(m_Bitmap.Width * Zoom), (int)(m_Bitmap.Height * Zoom));
    this.Invalidate();
    // GDI+ still lies to us - the return format is BGR, NOT RGB.
    BitmapData bmData = m_Bitmap.LockBits(new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
    BitmapData bmData2 = m_Bitmap2.LockBits(new Rectangle(0, 0, m_Bitmap.Width, m_Bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

    int stride = bmData.Stride;
    int stride2 = bmData.Stride;

    System.IntPtr Scan0 = bmData.Scan0;
    System.IntPtr Scan02 = bmData2.Scan0;
         }

    -----------------------------------------------------------------------

    拜託大大們幫我看看程式碼好嗎?

    不是要寫程式,是教教我怎麼合併進去就好,感恩摟!!

    我很急需解決  我這有OCR的壓縮檔

    拜託幫幫我  我可以傳檔案給大大 原始程式碼在裡面

    我的ㄐㄐ通:lovebliss52ao6@yahoo.com.tw(也是信箱)

    我的MSN:lovebliss52ao6520@hotmail.com

    我的無名:http://www.wretch.cc/blog/she90965

     

    2010年8月9日 下午 11:38

解答

  • 另外可到微軟網站下載此 COM 物件的線上手冊,例如你要的功能在線上手冊有範例,摘錄部分內容如下:

    OCR Method

    See AlsoApplies ToExampleSpecifics

     

    Performs optical character recognition (OCR) on the specified document or image.

    expression.OCR(LangId, OCROrientImage, OCRStraightenImage)

    expression    Required. An expression that returns a Document object or an Image object.

    LangId    Optional MiLANGUAGES. The language to use when performing OCR. Default is miLANG_SYSDEFAULT.

    LangId can be one of the following MiLANGUAGES constants.
    miLANG_CHINESE_SIMPLIFIED (2052, &H804)
    miLANG_CHINESE_TRADITIONAL (1028, &H404)
    miLANG_CZECH (5)
    miLANG_DANISH (6)
    miLANG_DUTCH (19, &H13)
    miLANG_ENGLISH (9)
    miLANG_FINNISH (11)
    miLANG_FRENCH (12)
    miLANG_GERMAN (7)
    miLANG_GREEK (8)
    miLANG_HUNGARIAN (14)
    miLANG_ITALIAN (16, &H10)
    miLANG_JAPANESE (17, &H11)
    miLANG_KOREAN (18, &H12)
    miLANG_NORWEGIAN (20, &H14)
    miLANG_POLISH (21, &H15)
    miLANG_PORTUGUESE (22, &H16)
    miLANG_RUSSIAN (25, &H19)
    miLANG_SPANISH (10)
    miLANG_SWEDISH (29, &H1D)
    miLANG_SYSDEFAULT (2048, &H800)
    miLANG_TURKISH (31, &H1F)

     

    OCROrientImage    Optional Boolean. Specifies whether the OCR engine attempts to determine the orientation of the page. Default is true.

    OCRStraightenImage    Optional Boolean. Specifies whether the OCR engine attempts to "de-skew" the page to correct for small angles of misalignment from the vertical. Default is true.

     

     

    Remarks

    The OCR engine always defaults to the user's regional settings for the LangID argument, unless you specify the language explicitly when calling the OCR method; it does not retain the previously used setting. In a mixed-language environment, it is a good practice to specify the LangID argument explicitly in every call to the OCR method.

     

    Example

    The following example performs OCR on all pages of the specified document.

    Sub TestOCR()
    
     Dim miDoc As MODI.Document
     
     Set miDoc = New MODI.Document
     miDoc.Create "C:\document1.tif"
     
     Screen.MousePointer = vbHourglass
     miDoc.OCR
     Screen.MousePointer = vbDefault
     
     Set miDoc = Nothing
    
    End Sub
    

    ©2003 Microsoft Corporation. All rights reserved.
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 黑夜之靈 2010年10月17日 下午 03:57
    2010年8月11日 下午 03:21

所有回覆

  • 如果要由使用者下令才進行比對, 可以將比對的動作放在Button的Click事件處理程序中, 否則可以放在for迴圈的外面
    2010年8月10日 上午 03:01
  • 大大妳好!!

    我就是想放在按鈕下做執行..沒錯沒錯

    但我不知道放進去該寫些什麼跟原有的程式碼相關的連結

    我問題就出在這裡

    你可以給我你的MAIL嗎? 我把OCR的壓縮傳給你

    幫我看一下 我該加些什麼好嗎?

    2010年8月10日 上午 03:43
  • 要加入button或功能表都需要拿到原始專案(包含原始程式碼), 如果拿不到就沒有辦法加button或功能表了, 所以您可以先確定一下.
    2010年8月10日 上午 03:52
  • 大大妳好!!

    有的,我就是有原是專案(原始碼)

    所以我才想請大大幫忙我看看我的原是程式碼

    看我上面的自己寫的資料夾程式及辨識的程式要怎麼加進去

    我的問題就是我不知道怎麼加進去讓他執行

    我試了很久 就是不會 所以才想請教一下大大我該如何做

    我這是2003 OCR軟體的壓縮檔   解壓縮後就可以執行了  馬上就可以像我所講的文字辨識了唷!!

    所以可以請大大幫我看看嗎? 拜託您。

    2010年8月10日 上午 03:58
  • ?

    如果你說的是 Office 2003 新增的 MODI 提供的 OCR ,這個是收多頁的 TIF 檔,所以請查詢線上手冊產生多頁 TIF 的範例即可。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月10日 下午 03:12
  • 上面的大大你好!!!

    對!!! 我就是說這個軟體!!

    你說查詢線上手冊產生多頁TIF檔的範例是什麼意思??

    線上手冊是在哪裡可以找到呢?

    而我要的圖片檔名是BMP檔~

    不是很懂 抱歉餒 感恩喔!!

    2010年8月11日 上午 12:02
  • 線上手冊:MSDN Library for Visual Studio

    安裝開發環境時,會提醒你安裝線上手冊。沒安裝的話,本討論區最上方文件庫點進去就是。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月11日 下午 03:19
  • 另外可到微軟網站下載此 COM 物件的線上手冊,例如你要的功能在線上手冊有範例,摘錄部分內容如下:

    OCR Method

    See AlsoApplies ToExampleSpecifics

     

    Performs optical character recognition (OCR) on the specified document or image.

    expression.OCR(LangId, OCROrientImage, OCRStraightenImage)

    expression    Required. An expression that returns a Document object or an Image object.

    LangId    Optional MiLANGUAGES. The language to use when performing OCR. Default is miLANG_SYSDEFAULT.

    LangId can be one of the following MiLANGUAGES constants.
    miLANG_CHINESE_SIMPLIFIED (2052, &H804)
    miLANG_CHINESE_TRADITIONAL (1028, &H404)
    miLANG_CZECH (5)
    miLANG_DANISH (6)
    miLANG_DUTCH (19, &H13)
    miLANG_ENGLISH (9)
    miLANG_FINNISH (11)
    miLANG_FRENCH (12)
    miLANG_GERMAN (7)
    miLANG_GREEK (8)
    miLANG_HUNGARIAN (14)
    miLANG_ITALIAN (16, &H10)
    miLANG_JAPANESE (17, &H11)
    miLANG_KOREAN (18, &H12)
    miLANG_NORWEGIAN (20, &H14)
    miLANG_POLISH (21, &H15)
    miLANG_PORTUGUESE (22, &H16)
    miLANG_RUSSIAN (25, &H19)
    miLANG_SPANISH (10)
    miLANG_SWEDISH (29, &H1D)
    miLANG_SYSDEFAULT (2048, &H800)
    miLANG_TURKISH (31, &H1F)

     

    OCROrientImage    Optional Boolean. Specifies whether the OCR engine attempts to determine the orientation of the page. Default is true.

    OCRStraightenImage    Optional Boolean. Specifies whether the OCR engine attempts to "de-skew" the page to correct for small angles of misalignment from the vertical. Default is true.

     

     

    Remarks

    The OCR engine always defaults to the user's regional settings for the LangID argument, unless you specify the language explicitly when calling the OCR method; it does not retain the previously used setting. In a mixed-language environment, it is a good practice to specify the LangID argument explicitly in every call to the OCR method.

     

    Example

    The following example performs OCR on all pages of the specified document.

    Sub TestOCR()
    
     Dim miDoc As MODI.Document
     
     Set miDoc = New MODI.Document
     miDoc.Create "C:\document1.tif"
     
     Screen.MousePointer = vbHourglass
     miDoc.OCR
     Screen.MousePointer = vbDefault
     
     Set miDoc = Nothing
    
    End Sub
    

    ©2003 Microsoft Corporation. All rights reserved.
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 黑夜之靈 2010年10月17日 下午 03:57
    2010年8月11日 下午 03:21
  • 大大你好!!

    我知道了,但我現在的問題不是在怎麼找尋可用物件的程式

    我的問題是如何把我寫的程式套用進去

    謝謝你 你的幫助我懂了   也讓我了解到有這麼好用的相關網站  

    但希望大大可以教教我怎麼把我上面寫的資料夾程式及辨識文字的程式寫到OCR主程式內

    感恩 你超熱心 超開心 拜託幫幫我唷!!

    可以給我你的MAIL嗎?

    我傳OCR原始檔給你    教教我該怎麼做   拜託您了。

    2010年8月11日 下午 04:00
  • 從你的描述我看不懂你想要幹嘛。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月12日 下午 12:40
  • 大大抱歉餒!!!

    可能是我比較不會表達

    講簡單一點 我程式已經寫好了

    他OCR那軟體不是文字辨識的軟體 對吧!!

    他本來就可以辨識一張圖片上自己要的字了

    我要把它改成可以讀取很多張來辨識我要的字

    而資料夾的程式跟比對圖片的程式我都寫在上面ㄌ

    但我不知道如何放進去原始的OCR程式內而可以執行我要的結果

    我的問題就是這樣 不知道怎麼合併

    大大們抱歉 這樣解釋有清楚點嗎???

    懇求幫忙 感恩摟!!

    2010年8月12日 下午 02:28
  • 你問問你身邊的朋友看看能不能看懂你的問題。

    你列出圖檔的部分然後說要合併,跟鬼合併嗎?不管是跟現有的執行檔合併還是原始碼合併,都應該列出 Input / Output 及呼叫方式,不然是要跟啥合併?

     


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月21日 上午 03:48
  • 大大您好!!!

    抱歉餒 可能我沒有跟您說清楚

    我這裡有ocr軟體原始的壓縮檔,裡面就有他ㄉ原始程式碼唷!!!

    方便給我你的mail我傳給你媽??

    拜託您幫忙唷!!!

    謝謝你的幫助。

    2010年8月22日 上午 12:04
  • 不方便。

    你應該把你自己的問題簡化後貼在論壇上,而不是到處要 eMail ,就算你直接給網址也不見得有人願意抓下來看。

    隔壁論壇這篇先去看看吧:張貼文章應注意事項及應提供資訊


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年8月22日 下午 01:10
  • 不好意思!!

    我應該要把我我需要的程式做個整合再PO上來

    我會做一下整合PO上來請教大大高手們

    不好意思ㄛ!!

    但希望大大能幫我 因為我是真ㄉ有盲點並不是把問題丟著就不管了

    謝謝。

     

    2010年8月22日 下午 11:22
  • public static void RGB2HSL (ColorRGB rgb, out double h, out double s, out double l)

    {

    }

    上面這段式HSL程式的開頭.. 請教一下  為什麼我跟我自己的程式做結合發生錯誤

    錯誤的部份:void的地方
    
    錯誤顯示是:必須是類別、委派、列舉、介面或結構
    
    我試過其他ㄉ都錯,想請教一下該打什麼呢? 請大大們幫幫我。
    
    還有請教一下一個問題,本人程式程式方面挺膚淺
    
    拜託大大們給點指導唷!!
    
    就是 用c#寫呼叫副程式的寫法 要如何寫呢?
    
    就是上面這段程式我要呼叫在下面的主程式內,要如何寫呢?
    
    謝謝大大們幫忙唷!!
    
    2010年10月15日 下午 06:42
  • public static void RGB2HSL(Color rgb, out double h, out double s, out double l)
    

    out (C# 參考)

    http://msdn.microsoft.com/zh-tw/library/t3c3bfhx(VS.80).aspx

    2010年10月16日 上午 01:10
  • 大大您好!

    OUT這我看不是很懂餒!

    是加在public static void RGB2HSL(Color rgb, out double h, out double s, out double l)上面嗎?

    還是加在哪呢?

     

    2010年10月16日 上午 01:22
  •         private void button1_Click(object sender, EventArgs e)
            {
                double h, s, l;
                RGB2HSL(Color.Red, out h, out s, out l);            
            }
    

    2010年10月16日 上午 01:47
  • 類似像這樣宣告
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text; public class HSL
    {
    public static void RGB2HSL(Color rgb, out double h, out double s, out double l)
    {
    //h, s , l must have value before exit this method.
    }
    }

    使用的方式

    private void button1_Click(object sender, EventArgs e)
    {
       double h, s, l;
       HSL.RGB2HSL(Color.Red, out h, out s, out l);   
    }
    
    
    

     


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年10月16日 上午 07:48
  • 不好意思!!!!  請教一下大大們!!

    打上後出現兩個錯誤點...  小弟我不知道該如何改正..  請大大們交交我唷!!!

    錯誤 1 最符合的多載方法 'myOCR.HSL.RGB2HSL(myOCR.ColorRGB, out double, out double, out double)' 有一些無效的引數 

    錯誤 2 引數 '1': 無法從 'System.Drawing.Color' 轉換為 'myOCR.ColorRGB' 

    2010年10月17日 上午 02:37
  • 把您的專案上傳到網路空間如Sky Drive等,不然也不知道您是怎麼改的...
    2010年10月17日 上午 10:17
  • 大大您好!! 以下是我的程式...
    請大大幫我看看唷!!!
    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Windows.Forms;
    using System.IO;
    using System.Data;
    //using System.ComponentModel;
    //using System.;
    
    namespace myOCR
    {
      public struct ColorRGB
      {
        public byte R;
        public byte G;
        public byte B;
        public ColorRGB(Color value)
        {
          this.R = value.R;
          this.G = value.G;
          this.B = value.B;
        }
        public static implicit operator Color(ColorRGB rgb)
        {
          Color c = Color.FromArgb(rgb.R, rgb.G, rgb.B);
          return c;
        }
        public static explicit operator ColorRGB(Color c)
        {
          return new ColorRGB(c);
        }
      }
      public class HSL
      {
        public static void RGB2HSL(ColorRGB rgb, out double h, out double s, out double l)
        {
          double r = rgb.R / 255.0;
          double g = rgb.G / 255.0;
          double b = rgb.B / 255.0;
          double v;
          double m;
          double vm;
          double r2, g2, b2;
          h = 0; // default to black
          s = 0;
          l = 0;
          v = Math.Max(r, g);
          v = Math.Max(v, b);
          m = Math.Min(r, g);
          m = Math.Min(m, b);
          l = (m + v) / 2.0;
          if (l <= 0.0)
          {
            return;
          }
          vm = v - m;
          s = vm;
          if (s > 0.0)
          {
            s /= (l <= 0.5) ? (v + m) : (2.0 - v - m);
          }
          else
          {
            return;
          }
          r2 = (v - r) / vm;
          g2 = (v - g) / vm;
          b2 = (v - b) / vm;
          if (r == v)
          {
            h = (g == m ? 5.0 + b2 : 1.0 - g2);
          }
          else if (g == v)
          {
            h = (b == m ? 1.0 + r2 : 3.0 - b2);
          }
          else
          {
            h = (r == m ? 3.0 + g2 : 5.0 - r2);
          }
          h /= 6.0;
        }
      }
    
    	/// <summary>
    	/// Description of MainForm.
    	/// </summary>
    	public partial class MainForm : Form
    	{
    		DataTable ds=new DataTable();//建立一個DataTable物件存放OCR後的資料
    		public MainForm()
    		{
    			//
    			// The InitializeComponent() call is required for Windows Forms designer support.
    			//
    			InitializeComponent();
    			
    			//
    			// TODO: Add constructor code after the InitializeComponent() call.
    			//
          //初始化DataGridView所需的頁面
    			DataColumn col_file=new DataColumn("File");  //設定欄位名稱
          DataColumn col_str = new DataColumn("String"); //設定欄位名稱
    			this.ds.Columns.Add(col_file); //將欄位加入DataTable中
          this.ds.Columns.Add(col_str);  //將欄位加入DataTable中
    			ocr_table.DataSource=ds;//將DataTable放入DataGridView這樣才會顯示資料
          ocr_table.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable; //禁用排序
          ocr_table.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable; //禁用排序
          //初始化DataGridView結束
    		}
    
        //顯示進度列函數
    		public void ShowProgress(int progress, ref bool cancel)
    		{
          //進度列的值等於傳入的整數
    			procBar.Value=progress;
    		}
    
    		/*
    		 * OCR函數
         * 來源 : http://www.dotblogs.com.tw/chou/archive/2009/10/05/10909.aspx
    		 * 
    		 * */
    		private string OCR(string strFileName)
        {
          string strResult = string.Empty;
    
          // 宣告 MODI.Document 物件 modiDocument,並且實例化
          MODI.Document modiDocument = new MODI.Document();
          
    			//procBar
    			modiDocument.OnOCRProgress += new MODI._IDocumentEvents_OnOCRProgressEventHandler(this.ShowProgress);
    			
          // MODI.Document 創建
          modiDocument.Create(strFileName);
    
          // 宣告 MODI.Image 物件 modiImage,其內容值來自 MODI.Document 物件 modiDocument
          MODI.Image modiImage = (MODI.Image)modiDocument.Images[0];
    
          // OCR Method(Language, WithAutoRotation, WithStraightenImage)
          //modiImage.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false);//原本語言是英文
          modiImage.OCR(MODI.MiLANGUAGES.miLANG_CHINESE_TRADITIONAL, true , false );//辨識的語言改為中文
          
    
          // 組合 OCR 辨識後的 Word
          foreach (MODI.Word WordItem in modiImage.Layout.Words)
          {
            strResult += WordItem.Text;
          }
          
          //設定procBar
          bool b=false;
          this.ShowProgress(100,ref b);
          modiDocument.Close(false);
    
          // 回傳辨識結果
          return strResult;
        }
    		
        //Scan按鈕按下時的動作
    		void Button1Click(object sender, EventArgs e)
    		{
          //建立一個資料夾選擇物件,並顯示
    			FolderBrowserDialog myfolder=new FolderBrowserDialog();
    			myfolder.ShowDialog();
    
          //判斷是否有選擇資料夾,如果有就進行動作
    			if(myfolder.SelectedPath.Length>0){
            //取得目錄內的所有檔案
    				DirectoryInfo di = new DirectoryInfo(myfolder.SelectedPath);
    				FileInfo[] files = di.GetFiles();
            
            //引入副檔
            double h, s, l;
            HSL.RGB2HSL(Color.Red,out h,out s,out l);
    
    				//依序掃描檔案
    				for(int n=0;n<files.Length;n++){
    					string ocr_str=""; //用來暫存OCR結果的變數
    					string ocr_file=files[n].FullName; //目前OCR的圖片檔完整路徑
    
              if (files[n].Name.Substring(0, 8) != "captured")//判斷前八個字是否為captured
              {
                continue;
              }
    
    					myfile.Text="("+(n+1).ToString()+"/"+files.Length.ToString()+") "+ocr_file; //將目前掃描的檔案名稱輸出到介面上
    					ocr_str=this.OCR(ocr_file); //進行OCR,傳入完整路徑
    				
    					//將結果寫入DataTable
    					DataRow row=this.ds.NewRow();
              row["File"] = files[n].FullName;  //僅檔名
    					row["String"]=ocr_str;     //OCR辨識出來的字
    					this.ds.Rows.Add(row);
    				}			
    			}
    		}
    
        //搜尋框內容有變動時執行的動作
        private void search_box_TextChanged(object sender, EventArgs e)
        {
          string key=search_box.Text; //取得欲搜尋的文字
    
          if (key.Length == 0)//判斷是否有輸入文字
          {
            search_box.BackColor = Color.White; //無,將搜尋框底色改為白
          }else{
            //有,進行搜尋
            bool rt = search_datatable(search_box.Text);  //使用自訂的搜尋函數,傳入字串
            if(rt){
              search_box.BackColor = Color.White;//將搜尋框底色改為白
            }else{
              search_box.BackColor = Color.FromArgb(255, 200, 200);//將搜尋框底色改為紅
            }
          }
        }
    
        //自訂的搜尋函數
        bool search_datatable(string key_str) {
          //每次的搜尋前都先清除所有的底色
          for (int n = 0; n < this.ds.Rows.Count; n++) {
            ocr_table.Rows[n].DefaultCellStyle.BackColor = Color.White;
          }
    
          //進行搜尋
          int search_count = 0;  //繼錄找到幾次的變數
          for (int n = 0; n < this.ds.Rows.Count;n++ ){
            string ocr_str = this.ds.Rows[n][1].ToString(); //從DataTabel中取得第二個欄位內容
            if (ocr_str.IndexOf(key_str)>-1) { //用indexOf函數來判斷字串A是否存在字串B中
              ocr_table.Rows[n].DefaultCellStyle.BackColor = Color.FromArgb(200, 200, 255);  //有找到就把該列改為藍色
              search_count++; //計數器加一
            }
          }
          //回傳真假值
          // true:有找到  false:沒找到
          if (search_count > 0){//用計數器是否為0判斷
            return true;
          }else{
            return false;
          }
        }
    
        //取得選取的Row所指的檔案並顯示在picbox中
        private void ocr_table_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
          int select = ocr_table.SelectedCells[0].RowIndex;
          picbox.ImageLocation = this.ds.Rows[select][0].ToString();
        }
    
        private void MainForm_Load(object sender, EventArgs e)
        {
    
        }
    	}
    }
    
    2010年10月17日 下午 02:30
  • tihs大 已在你另一po回答了

    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2010年10月18日 上午 01:59