Monday, March 16, 2009

How to change BackColor of Datagrid to rows in windows mobile(VB.net)


Imports System
Imports System.Drawing
Imports System.Collections
Imports System.Windows.Forms
Imports System.Reflection
Imports System.Data


'****Chage back color of data grid*************
Namespace TEST

    Public Class Colorrow
        Implements IDisposable

        Private m_grid As DataGrid
        Private m_r As Object
        Private arrClr() As Color = {Color.White, Color.LightYellow}
        Private brCell As SolidBrush
        Private m_fiRowVisibleFirst, m_fiRowVisibleLast As FieldInfo
        Private m_fiRowDrawFirst, m_fiRowDrawLast As FieldInfo
        Private m_miDrawCells As MethodInfo
        Private preRow As Integer = 0

        Private iRowVisibleFirst, iRowVisibleLast As Integer

        Public Sub New(ByVal grid As DataGrid)
            m_grid = grid
            HookGrid()
        End Sub

        Private Sub HookGrid()

            If m_grid Is Nothing Then
                MsgBox("No Records to Display", MsgBoxStyle.Information)
                Return
            Else

                m_r = GetType(DataGrid).GetField("m_renderer", BindingFlags.NonPublic 

Or BindingFlags.GetField Or BindingFlags.Instance).GetValue(m_grid)
                m_fiRowDrawFirst = m_r.GetType().GetField("m_irowDrawFirst", 

BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance)
                m_fiRowDrawLast = m_r.GetType().GetField("m_irowDrawLast", 

BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance)
                m_fiRowVisibleFirst = GetType(DataGrid).GetField("m_irowVisibleFirst", 

BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance)
                m_fiRowVisibleLast = GetType(DataGrid).GetField("m_irowVisibleLast", 

BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance)
                m_miDrawCells = m_r.GetType().GetMethod("_DrawCells", 

BindingFlags.NonPublic Or BindingFlags.Instance)

                brCell = CType(m_r.GetType().GetField("m_brushCellBack", 

BindingFlags.NonPublic Or BindingFlags.GetField Or 

BindingFlags.Instance).GetValue(m_r), SolidBrush)



                Dim vsb As VScrollBar = CType(GetType(DataGrid).GetField("m_sbVert", 

BindingFlags.NonPublic Or BindingFlags.GetField Or 

BindingFlags.Instance).GetValue(m_grid), VScrollBar)
                Dim hsb As HScrollBar = CType(GetType(DataGrid).GetField("m_sbHorz", 

BindingFlags.NonPublic Or BindingFlags.GetField Or 

BindingFlags.Instance).GetValue(m_grid), HScrollBar)

                AddHandler vsb.ValueChanged, AddressOf vsb_ValueChanged
                AddHandler hsb.ValueChanged, AddressOf hsb_ValueChanged

                AddHandler m_grid.Paint, AddressOf grid_Paint
                AddHandler m_grid.CurrentCellChanged, AddressOf grid_CurrentCellChanged


                iRowVisibleFirst = CInt(Fix(m_fiRowVisibleFirst.GetValue(m_grid)))
                iRowVisibleLast = CInt(Fix(m_fiRowVisibleLast.GetValue(m_grid)))

            End If


        End Sub

        Private Sub UnhookGrid()
            If m_grid Is Nothing Then
                Return
            End If

            Dim vsb As VScrollBar = CType(GetType(DataGrid).GetField("m_sbVert", 

BindingFlags.NonPublic Or BindingFlags.GetField Or 

BindingFlags.Instance).GetValue(m_grid), VScrollBar)
            Dim hsb As HScrollBar = CType(GetType(DataGrid).GetField("m_sbHorz", 

BindingFlags.NonPublic Or BindingFlags.GetField Or 

BindingFlags.Instance).GetValue(m_grid), HScrollBar)

            RemoveHandler vsb.ValueChanged, AddressOf vsb_ValueChanged
            RemoveHandler hsb.ValueChanged, AddressOf hsb_ValueChanged

            RemoveHandler m_grid.Paint, AddressOf grid_Paint
            RemoveHandler m_grid.CurrentCellChanged, AddressOf grid_CurrentCellChanged
        End Sub

        Public Property AcceptRowColor() As Color
            Get
                Return arrClr(0)
            End Get
            Set(ByVal value As Color)
                arrClr(0) = value
            End Set
        End Property

        Public Property NonAcceptRowColor() As Color
            Get
                Return arrClr(1)
            End Get

            Set(ByVal value As Color)
                arrClr(1) = value
            End Set
        End Property


        Private Sub ForceRepaintGridRow(ByVal g As Graphics, ByVal row As Integer)

            Dim o As Object = m_grid(row, 5)
            Dim value As String = CType(o, String)

            value = value.Substring(0, 6)   'sould change to Substring(0, 6)


            If value.Equals("Days 0") Then   'sould change to "Days 0"

                brCell.Color = arrClr(1)

                m_fiRowDrawFirst.SetValue(m_r, row)
                m_fiRowDrawLast.SetValue(m_r, row)
                m_miDrawCells.Invoke(m_r, New Object() {g})



            Else
                brCell.Color = arrClr(0)
                'brCellFore.Color = arrClrText[1]
                m_fiRowDrawFirst.SetValue(m_r, row)
                m_fiRowDrawLast.SetValue(m_r, row)
                m_miDrawCells.Invoke(m_r, New Object() {g})
            End If
        End Sub


        Private Sub ForceRepaintGridRows(ByVal g As Graphics, ByVal rowStart As 

Integer, ByVal rowEnd As Integer)

            Dim i As Integer
            Dim o As Object
            Dim value As String
            For i = rowStart To rowEnd

                o = m_grid(i, 5)
                value = CType(o, String)
                value = value.Substring(0, 6)  'sould change to Substring(0, 6)


                If value.Equals("Days 0") Then   'sould change to "Days 0"
                    brCell.Color = arrClr(1)
                    'brCellFore.Color = arrClrText[0]
                    m_fiRowDrawFirst.SetValue(m_r, i)
                    m_fiRowDrawLast.SetValue(m_r, i)
                    m_miDrawCells.Invoke(m_r, New Object() {g})

                    'MsgBox(value)
                    'MsgBox("Light Blue")


                Else
                    brCell.Color = arrClr(0)
                    'brCellFore.Color = arrClrText[1]
                    m_fiRowDrawFirst.SetValue(m_r, i)
                    m_fiRowDrawLast.SetValue(m_r, i)
                    m_miDrawCells.Invoke(m_r, New Object() {g})
                End If

            Next i
        End Sub




        Private Sub vsb_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
            Dim iRowFirst As Integer = CInt(Fix(m_fiRowVisibleFirst.GetValue(m_grid)))
            Dim iRowLast As Integer = CInt(Fix(m_fiRowVisibleLast.GetValue(m_grid)))
            Dim g As Graphics = m_grid.CreateGraphics()
            If iRowVisibleFirst > iRowFirst Then 'Scroll Up
                ForceRepaintGridRows(g, iRowFirst, iRowVisibleFirst)
            Else
                ForceRepaintGridRows(g, iRowVisibleLast, iRowLast)
            End If
            iRowVisibleFirst = iRowFirst
            iRowVisibleLast = iRowLast

        End Sub

        Private Sub hsb_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
            grid_Paint(Nothing, Nothing)
        End Sub

#Region "IDisposable Members"

        Public Sub Dispose() Implements IDisposable.Dispose
            UnhookGrid()
        End Sub

#End Region


        Private Sub grid_Paint(ByVal sender As Object, ByVal e As PaintEventArgs)
            Dim rowFirst, rowLast As Integer
            rowFirst = CInt(Fix(m_fiRowVisibleFirst.GetValue(m_grid)))
            rowLast = CInt(Fix(m_fiRowVisibleLast.GetValue(m_grid)))
            rowFirst = Math.Max(rowFirst, 0)
            rowLast = Math.Max(rowLast, 0)
            Dim cl As Color = brCell.Color
            '  Color clText = brCellFore.Color;
            Dim g As Graphics
            g = m_grid.CreateGraphics()
            ForceRepaintGridRows(g, rowFirst, rowLast)
            brCell.Color = cl
            ' brCellFore.Color = clText;
        End Sub

        Private Sub grid_CurrentCellChanged(ByVal sender As Object, ByVal e As 

EventArgs)
            Dim g As Graphics
            g = m_grid.CreateGraphics()


            If m_grid.CurrentCell.RowNumber > -1 Then
                ForceRepaintGridRow(g, m_grid.CurrentCell.RowNumber)

                If preRow > -1 Then
                    ForceRepaintGridRow(g, preRow)
                End If
                preRow = m_grid.CurrentCell.RowNumber

            End If
        End Sub



    End Class

End Namespace

Encrpt-Decypt strings using Tripple DES in C#

using System.Security.Cryptography;




namespace test
{
    class TripleDesAngine
    {

        /// Encrypt a string using dual encryption method. Return a encrypted cipher Text
        public static string Encrypt(string clearText)
        {
            byte[] keyArray;
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(clearText);

            string key = "This is the Key";

            //use hash to genarate keyArray
            MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
            keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
            hashmd5.Clear();

            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
            tdes.Key = keyArray;
            tdes.Mode = CipherMode.ECB;
            tdes.Padding = PaddingMode.PKCS7;

            ICryptoTransform cTransform = tdes.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
            tdes.Clear();

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }

        /// DeCrypt a string using dual encryption method. Return a DeCrypted clear string
        public static string Decrypt(string cipherString)
        {
            byte[] keyArray;
            byte[] toEncryptArray = Convert.FromBase64String(cipherString);


            string key = "This is the Key";

            //create keyArray using MD5
            MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
            keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
            hashmd5.Clear();

            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
            tdes.Key = keyArray;
            tdes.Mode = CipherMode.ECB;
            tdes.Padding = PaddingMode.PKCS7;

            ICryptoTransform cTransform = tdes.CreateDecryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            tdes.Clear();
            return UTF8Encoding.UTF8.GetString(resultArray, 0, resultArray.Length);

        }
    }
}