[Office 2010の開発シリーズ] [C#が]あなたのWinフォームは即座にExcelのスプレッドシートに入力同期させることができましょう!─ABCの記事

[Office 2010の開発シリーズ]は、あなたのWinフォームは即座にExcelのスプレッドシートに入力同期させることができましょう!─ABCの記事


この記事では、その後、リボンのWinForm経由でカスタムを開く方法について説明し、直接および同期にテキスト入力に保存するExcel形式で。

もちろん、この論文では、単に基本的なテキストを紹介するだけでなく、探検するには、この資料の範囲内で他の問題ではないについてはその実践、展開およびデバッグを説明します!

画像のプレビューを※:

<<これは、リボンのボタンを示した例でした。>>

画像

<< C2省グリッドは、すでに入力された、または状況とフォーカスされています。そして、B5は、すぐに結果が同期B5に表示され、入力セルを格納されたセルを保存しています。

画像

※インターフェース、プログラムの練習:

1.最初のプロジェクトと作成してくださいリボンを

2.次に、中にリボン 1つの追加画像  ボタン(ボタンを)。

3とのボタンを喜ばクリックして次の手順を追加することにより、イベント。

   1:プライベート無効btnFastKeyIn_Click(オブジェクト送信者、RibbonControlEventArgs E)
   2:{
   3:FrmFastKeyIn FFKI =新しいFrmFastKeyIn()。
   4:FFKI.ShowDialog();
   5:              FFKI.Close();
   6:              FFKI.Dispose();
   7:          }


4. 并请新增一个 WinForm (本命名为 FrmFastKeyIn.cs ),并设计如下:

画像

5. 该 WinForm 的对象所属事件中,请分别加入下列程序 [ 即该 Winform 的所有程序 ]:

   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.ComponentModel;
   4:  using System.Data;
   5:  using System.Drawing;
   6:  using System.Linq;
   7:  using System.Text;
   8:  using System.Windows.Forms;
   9:   
  10:  using Gma.UserActivityMonitor;
  11:  using Microsoft.Office.Core;
  12:  using Microsoft.Office.Interop.Excel;
  13:  using Microsoft.Office.Tools.Excel;
  14:   
  15:  namespace ExcelWorkbook1
  16:  {
  17:      public partial class FrmFastKeyIn : Form
  18:      {
  19:          public FrmFastKeyIn()
  20:          {
  21:              InitializeComponent();
  22:          }
  23:   
  24:          string get_nowCR = null;
  25:          bool change_Row = false;
  26:          StringBuilder sb_Old = new StringBuilder();
  27:          int sb_old_length = 0;
  28:   
  29:          private void richTextBox1_TextChanged(object sender, EventArgs e)
  30:          {
  31:              // 当按下或放开键盘时进行处理
  32:              //HookManager.KeyDown +=new KeyEventHandler(HookManager_KeyDown);
  33:              //HookManager.KeyUp += new KeyEventHandler(HookManager_KeyUp);
  34:   
  35:              // 此部分是针对字符串处理 (原本还含有当按下 Ctrl+Tab 时的相关字符串处理)
  36:              get_nowCR = T_Column + T_Row;
  37:              if(change_Row == true)
  38:              {
  39:                  sb_Old.Remove(0, sb_Old.Length);
  40:                  sb_old_length = 0;
  41:                  change_Row = false;
  42:              }
  43:              else if (change_Row == false)
  44:              {
  45:   
  46:                  sb_Old.Insert(sb_old_length, ((RichTextBox)sender).Text.Substring(sb_old_length, 1));
  47:                  sb_old_length += 1;
  48:              }
  49:   
  50:              // ※ 核心... 就是把值写到 Excel 的 Sheet1 中所指定的保存格中
  51:              Globals.Sheet1.Range[get_nowCR, Type.Missing].Value2 = sb_Old.ToString();
  52:   
  53:          }
  54:   
  55:          //void HookManager_KeyDown(object sender, KeyEventArgs e)
  56:          //{
  57:          //    ProcessMutilKey(e.KeyCode, true);
  58:          //}
  59:   
  60:          //void HookManager_KeyUp(object sender, KeyEventArgs e)
  61:          //{
  62:          //    ProcessMutilKey(e.KeyCode, false);
  63:          //}
  64:   
  65:          //// 记录 Tab 及 Ctrl 是否被同时 KeyDown 之变量及处理
  66:          //bool IsTabDown = false, IsCtrlDown = false;
  67:          //private void ProcessMutilKey(Keys MutilKey, bool DownOrUp)
  68:          //{
  69:          //    if (MutilKey == Keys.Tab)
  70:          //    {
  71:          //        IsTabDown = DownOrUp;
  72:          //    }
  73:          //    else if (MutilKey == Keys.LControlKey)
  74:          //    {
  75:          //        IsCtrlDown = DownOrUp;
  76:          //    }
  77:   
  78:   
  79:          //    const int t_RowAdd = 1;
  80:          //    int New_Row = 0;
  81:          //    if (IsCtrlDown == true && IsTabDown == true)
  82:          //    {
  83:          //        New_Row = (int.Parse(T_Row)) + t_RowAdd;
  84:          //        T_Row = New_Row.ToString();
  85:          //        change_Row = true;
  86:          //    }
  87:          //}
  88:   
  89:          // 窗口启动时
  90:          private void FrmFastKeyIn_Load(object sender, EventArgs e)
  91:          {
  92:              textBox1.Select();
  93:              textBox1.Focus();
  94:          }
  95:   
  96:          // 取得 栏
  97:          string T_Column= null;
  98:          private void textBox1_Leave(object sender, EventArgs e)
  99:          {
 100:              T_Column = textBox1.Text;
 101:          }
 102:   
 103:          // 取得 列
 104:          string T_Row = null;
 105:          private void textBox2_Leave(object sender, EventArgs e)
 106:          {
 107:              T_Row = textBox2.Text;
 108:          }
 109:      }
 110:  }


※ 结语:

本例原本是设计除可直接输入外,若当 User 按下 Ctrl + Tab 时,会自动跳列 (栏)的设计,但怕过于复杂,而没办法把重点及本篇主旨核心充份说明,故在上述第5步骤的程序是就把另一部分(即 Ctrl+Tab 键的处理) 先暂时标除,仅留下本次所提述的内容。

もちろん、プログラムの起動と動作は、一般的にOK !!!他の機能がある場合は、してくださいまた、自給こんにちは〜と見なされます

コンテンツは、私は(Ctrlキー+ Tabキー)を挙げるだけでなく、参照してください:[Winフォーム、C#]グローバルモニタリングマウス(マウス)及びキーボード(キーボード)Yiwenイベント。

オリジナル:ビッグボックス  [Office 2010の開発シリーズ] [C#が]あなたのWinフォームは即座にExcelのスプレッドシートに入力同期させることができましょう!─ABCの記事


おすすめ

転載: www.cnblogs.com/petewell/p/11495538.html
おすすめ