• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用Visual C#來操作Clipboard

    發表于:2007-05-25來源:作者:點擊數: 標簽:Clipboard操作visual
    Clipboard就是所謂的剪切板,當我們同時按動Ctrl+C鍵或者點擊菜單“拷貝”的時候,選定的對象就被存放在了剪切板中了。如果剛才選定的對象是文件,那么在定盤符后,按動Ctrl+V鍵或者點擊菜單“粘貼”,這時選定的文件就保存到指定的磁盤上面了;如果選定的
    Clipboard就是所謂的剪切板,當我們同時按動Ctrl+C鍵或者點擊菜單“拷貝”的時候,選定的對象就被存放在了剪切板中了。如果剛才選定的對象是文件,那么在定盤符后,按動Ctrl+V鍵或者點擊菜單“粘貼”,這時選定的文件就保存到指定的磁盤上面了;如果選定的對象是圖象,那么在打開“畫圖”之后,按動Ctrl+V鍵或者點擊菜單“粘貼”,圖象就會顯示在畫圖中了;如果是文本,那么在打開文本編輯器后,按動Ctrl+V鍵或者點擊菜單“粘貼”,這時文本就會顯示在文本編輯器中。當然選定的對象還有許多種,這就不一一舉例了。上面這些操作其實就是剪切板幾種典型的操作。那么這些操作如果用Visual C#來實現到底是個什么樣子?本文就將通過一個程序來具體探討這個問題。
    一.本文程序設計和運行的軟件環境
    (1).微軟公司視窗2000服務器
    (2)..Net FrameWork SDK Beta 2
    二.程序的主要功能以及運行界面
    其實看了上面的介紹以后,我們不難得出剪切板的幾種基本的操作,即:拷貝數據到剪
    切板中、把當前剪切板中的數據取出來。下面就按照這些操作來編寫一個程序。這個程序主窗體是由二個TextBox組件即TextBox1和TextBox2,和二個Button組件構成。實現的功能是當選定TextBox1的文本后,按動“拷貝指定的數據到剪切板”按鈕,拷貝數據到剪切板中,然后按動“從當前剪切板獲得數據”按鈕得到剪切板中的數據,并由TextBox2顯示出來。下面的圖象是程序運行的界面:

    圖1 拷貝指定對象到剪切板中

    圖2 從當前剪切板中獲得數據,并顯示出來
    三.程序的設計思路以及重要步驟地解決辦法
    (1).如何把指定對象拷貝到剪切板中:
    在這個環節中要處理好二件問題:其一是如何判斷是否選定了TextBox1中的對象,其二是如何把選定的對象存放到剪切板中。下面就帶著這二個問題來進行分析。
    I > .如何判斷TextBox1中是否選定了對象:
    對于TextBox組件中有一個屬性SelectedText,這個屬性就是選定的文本,在程序中是通過判斷這個屬性值是否為“”,來判斷TextBox1中是否選定了對象的。
    II > .如何把選定的對象存放到剪切板中:
    要完成此功能,要使用到中的Clipboard類,Clipboard類是一個封閉的類,這決定了他無法被繼承,此類的主要功能就是存取剪切板中的數據。他有一個方法SetDataObject(),這個方法的作用就是把數據存放到剪切板中。
    解決上面二個問題的代碼如下:
    if ( textBox1.SelectedText != "" )
    Clipboard.SetDataObject ( textBox1.SelectedText ) ;
    else
    textBox2.Text = "在textBox1中沒有選定的內容" ;
    (2).把讀取剪切板中的數據,并顯示出來。
    要實現本步驟,也需要解決好二個問題:其一,在剪切板中不僅可以存放文本,還可以存放其他類型的數據,而TextBox2能夠顯示出來的數據類型只有文本,所以為了程序有更好的穩定性,在顯示之前,要判斷當前剪切板中的數據類型是文本,其二,讀取剪切板中的數據,并顯示出來。
    I > .判斷當前剪切板中的數據類型:
    判斷剪切板中的數據類型,要使用到IdataObject接口,此接口的可以存放從剪切板中讀取得數據。通過IdataObject接口的方法GetDataPresent()來判斷是否為符合自己需要的數據類型。
    II >.讀取剪切板中的數據,并顯示出來:
    通過Clipboard類的GetDataObject()可以把當前剪切板中的數據存放到IdataObject接口中,但IdataObject接口這地數據不能直接被程序使用,必須通過IdataObject接口的GetData()獲得數據。但由于GetData()地返回值是一個Object類型變量,即參考類型變量,而TextBox1顯示的文本是實值類型變量,所以還要進行一次出箱的操作,這種操作在前面的文章已經比較詳細的介紹過了,這里就不加敘述了。經過出箱操作后的數據就可以被TextBox1使用了。下面是解決上面二個問題的代碼:
    IDataObject iData = Clipboard.GetDataObject ( ) ;
    //檢測數據是否是可以使用的格式,即文本格式
    if ( iData.GetDataPresent ( DataFormats.Text ) )
    {
    //是可以使用的格式,就在textbox2中顯示剪切板中的內容
    textBox2.Text = ( String ) iData.GetData ( DataFormats.Text ) ;
    }
    else
    {
    //如果不是
    textBox2.Text = "沒有從剪切板中接收到數據!" ;
    }
    四.本文的源程序代碼
    掌握了程序的主要步驟后,不難得到以下程序代碼:
    using System ;
    using System.Drawing ;
    using System.Collections ;
    using System.ComponentModel ;
    using System.Windows.Forms ;
    using System.Data ;

    public class Form1 : Form
    {
    private Button button1 ;
    private Button button2 ;
    private TextBox textBox1 ;
    private TextBox textBox2 ;
    private System.ComponentModel.Container components = null ;
    public Form1 ( )
    {
    InitializeComponent ( ) ;
    }

    protected override void Dispose ( bool disposing )
    {
    if ( disposing )
    {
    if ( components != null )
    {
    components.Dispose ( ) ;
    }
    }
    base.Dispose ( disposing ) ;
    }

    private void InitializeComponent ( )
    {
    this.button1 = new Button ( ) ;
    this.button2 = new Button ( ) ;
    this.textBox1 = new TextBox () ;
    this.textBox2 = new TextBox ( ) ;
    this.SuspendLayout ( ) ;

    this.button1.Location = new System.Drawing.Point ( 264 , 56 ) ;
    this.button1.Size = new System.Drawing.Size ( 96 , 40 ) ;
    this.button1.Name = "button1" ;
    this.button1.TabIndex = 0 ;
    this.button1.Text = "拷貝指定的數據到剪切板" ;
    this.button1.Click += new System.EventHandler ( this.button1_Click ) ;

    this.button2.Location = new System.Drawing.Point ( 264 , 104 ) ;
    this.button2.Size = new System.Drawing.Size ( 96 , 40 ) ;
    this.button2.Name = "button2" ;
    this.button2.TabIndex = 1 ;
    this.button2.Text = "從當前剪切板獲得數據" ;
    this.button2.Click += new System.EventHandler ( this.button2_Click ) ;

    this.textBox1.Location = new System.Drawing.Point ( 64 , 64 ) ;
    this.textBox1.Name = "textBox1" ;
    this.textBox1.TabIndex = 2 ;
    this.textBox1.Text = "" ;

    this.textBox2.Location = new System.Drawing.Point ( 64 , 104 ) ;
    this.textBox2.Name = "textBox2" ;
    this.textBox2.TabIndex = 3 ;
    this.textBox2.Text = "" ;

    this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
    this.ClientSize = new System.Drawing.Size ( 384 , 273 ) ;
    this.Controls.Add ( textBox2 ) ;
    this.Controls.Add ( textBox1 ) ;
    this.Controls.Add ( button2 ) ;
    this.Controls.Add ( button1 ) ;
    this.Name = "Form1" ;
    this.Text = "Visual C#來操作Clipboard!" ;
    this.ResumeLayout ( false ) ;

    }

    static void Main ( )
    {
    Application.Run ( new Form1 ( ) ) ;
    }

    private void button1_Click ( object sender , System.EventArgs e )
    {
    if ( textBox1.SelectedText != "" )
    Clipboard.SetDataObject ( textBox1.SelectedText ) ;
    else
    textBox2.Text = "在textBox1中沒有選定的內容";
    }

    private void button2_Click ( object sender , System.EventArgs e )
    {
    IDataObject iData = Clipboard.GetDataObject ( ) ;
    //檢測數據是否是可以使用的格式,即文本格式
    if ( iData.GetDataPresent ( DataFormats.Text ) )
    {
    //是可以使用的格式,就在textbox2中顯示剪切板中的內容
    textBox2.Text = ( String ) iData.GetData ( DataFormats.Text ) ;
    }
    else
    {
    //如果不是
    textBox2.Text = "沒有從剪切板中接收到數據!" ;
    }

    }
    }
    五.總結
    至此我們已經完成了用Visual C#實現剪切板基本操作的全部工作,這就是拷貝數據到剪切板、讀取剪切板中需要的數據、顯示剪切板中的數據等三個方面。其中又以前二個方面的內容最為重要。雖然以上這些操作和處理針對的對象都是文本,但實際對于其他類型的對象也是一樣,只需要做少許修改就可以了,不信你試一下。

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>