public static String[,] AlignString(String[,] Data, String[] Filler,int[] columnSpace , Font Font)
        {
            int NRow = Data.GetLength(0);
            int NCol = Data.GetLength(1);
            String[,] result = new String[NRow, NCol];

            System.Windows.Forms.Button aButton = new System.Windows.Forms.Button();
            Graphics G = aButton.CreateGraphics();
            System.Drawing.StringFormat sf = System.Drawing.StringFormat.GenericTypographic;
            sf.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

            for (int j = 0; j < NCol; j++)
            {
                //計算此欄字串的最大長度
                SizeF maxSize = G.MeasureString(Data[0, j], Font, 0, sf);
                for (int i = 1; i < NRow; i++)
                {
                    SizeF sizeF = G.MeasureString(Data[i, j], Font, 0, sf);
                    if (sizeF.Width > maxSize.Width)
                        maxSize = sizeF;
                }

                SizeF fillerSizeF = G.MeasureString(Filler[j], Font, 0, sf);
                SizeF ColSize = new SizeF(maxSize.Width + fillerSizeF.Width * columnSpace[j], maxSize.Height);

                for (int i = 0; i < NRow; i++)
                {
                    result[i, j] = Data[i, j];
                    while (G.MeasureString(result[i, j], Font, 0, sf).Width < ColSize.Width)
                        result[i, j] += Filler[j];
                }
            }

            return result;
        }
        public static void ToTransparent(this System.Windows.Forms.Button Button, System.Drawing.Color TransparentColor)
        {
            Bitmap bmp = ((Bitmap)Button.Image);

            //Bitmap bmp = new Bitmap(100, 100);
            //Button.Image = bmp;
            bmp.MakeTransparent(TransparentColor);
            int      x  = (Button.Width - bmp.Width) / 2;
            int      y  = (Button.Height - bmp.Height) / 2;
            Graphics gr = Button.CreateGraphics();

            gr.DrawImage(bmp, x, y);
        }
        public static String[,] AlignString(String[,] Data, String[] Filler, int[] columnSpace, Font Font)
        {
            int NRow = Data.GetLength(0);
            int NCol = Data.GetLength(1);

            String[,] result = new String[NRow, NCol];

            System.Windows.Forms.Button aButton = new System.Windows.Forms.Button();
            Graphics G = aButton.CreateGraphics();

            System.Drawing.StringFormat sf = System.Drawing.StringFormat.GenericTypographic;
            sf.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;

            for (int j = 0; j < NCol; j++)
            {
                //計算此欄字串的最大長度
                SizeF maxSize = G.MeasureString(Data[0, j], Font, 0, sf);
                for (int i = 1; i < NRow; i++)
                {
                    SizeF sizeF = G.MeasureString(Data[i, j], Font, 0, sf);
                    if (sizeF.Width > maxSize.Width)
                    {
                        maxSize = sizeF;
                    }
                }

                SizeF fillerSizeF = G.MeasureString(Filler[j], Font, 0, sf);
                SizeF ColSize     = new SizeF(maxSize.Width + fillerSizeF.Width * columnSpace[j], maxSize.Height);

                for (int i = 0; i < NRow; i++)
                {
                    result[i, j] = Data[i, j];
                    while (G.MeasureString(result[i, j], Font, 0, sf).Width < ColSize.Width)
                    {
                        result[i, j] += Filler[j];
                    }
                }
            }

            return(result);
        }