Click here to Skip to main content
15,892,674 members
Articles / Programming Languages / C#

The Grid Processor: Word Processing Abilities for the .NET DataGridView Component

Rate me:
Please Sign up or sign in to vote.
4.87/5 (15 votes)
7 May 200711 min read 65.7K   1.6K   51  
A plugin which offers search and replace, casing and other capabilities for the Microsoft .NET DataGridView component
#region GNU notice
// GridProcessor - Search and replace abilities for the .NET DataGridView
// Copyright (C) 2007, by Evan Stein
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.

// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
//
#endregion GNU notice
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;

namespace GridProcessor
{
    /// <summary>
    /// A set of instructions for replacing text
    /// </summary>
    [Serializable]
    public class Replacement : GridProcess
    {
        /// <summary>
        /// Constructs a blank, new Replacement object
        /// </summary>
        public Replacement() 
        { 
        }

        /// <summary>
        /// The expression identifying text to be replaced
        /// </summary>
        public override string SearchExpression
        {
            get { return mSearchExpression; }
            set { mSearchExpression = value; }
        }

        /// <summary>
        /// Replacement regular expression, or literal text
        /// </summary>
        public string ReplaceExpression
        {
            get { return mReplaceExpression; }
            set { mReplaceExpression = value; }
        }

        /// <summary>
        /// Should the replacement pay attention to upper- or lower-case?
        /// </summary>
        public override bool CaseSensitive
        {
            get { return mCaseSensitive; }
            set { mCaseSensitive = value; }
        }

        /// <summary>
        /// Are the search and replace expressions regular expressions?
        /// </summary>
        public override bool UseRegex
        {
            get { return mUseRegex; }
            set { mUseRegex = value; }
        }

        /// <summary>
        /// Should the result be converted to upper case?
        /// </summary>
        public bool ToUpper
        {
            get { return mToUpper; }
            set { mToUpper = value; }
        }

        /// <summary>
        /// Produces a copy of the replacement, to avoid reference
        /// issues
        /// </summary>
        /// <returns>Copy</returns>
        public Replacement Clone() 
        {
            Replacement newItem;
            MemoryStream ms = new MemoryStream();
            BinaryFormatter bf = new BinaryFormatter();

            // Serialize the object into the stream.
            bf.Serialize(ms, this);
            //Position streem pointer back to first byte.
            ms.Seek(0, SeekOrigin.Begin);
            // Deserialize into another object.
            newItem = (Replacement)bf.Deserialize(ms);
            // Release memory.
            ms.Close();

            return newItem;
        }

    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
United Kingdom United Kingdom
I'm a London-based software developer. Originally from New York, I came here in 1997 to run European application development for Standard & Poors. I now work independently ... and I'm still here!

Having seen how US software behaves outside the US, I'm keenly interested in problems of global and multilingual software design. I also used to write intelligence-gathering software, and still can't resist a well-turned algorithm! Before my IT career I was in music, and I'm now combining both interests in a highly-exciting 'Project-X'. I could tell you what it is, but ....

When not thinking about all of the above, I'm fascinated by all aspects of different cultures. (You can't take New York out of the New Yorker.) Interests include jazz, classical and world music, languages, history and ethnic food. I'm also an amateur travel writer and photographer, and run a site at www.travelogues.net, which you're welcome to stop by and visit!

Comments and Discussions