+            // Draw horizontal rule if required
+            if (GetWindowStyle() & wxLC_HRULES)
+            {
+                dc.SetPen(pen);
+                dc.SetBrush(* wxTRANSPARENT_BRUSH);
+                dc.DrawLine(0 - dev_x , i*lineSpacing , clientSize.x - dev_x , i*lineSpacing );
+           }
+        }
+
+        // Draw last horizontal rule
+        if ((i > (size_t) (y_s / lineSpacing)) && (GetWindowStyle() & wxLC_HRULES))
+        {
+            dc.SetPen(pen);
+            dc.SetBrush(* wxTRANSPARENT_BRUSH);
+            dc.DrawLine(0 - dev_x , i*lineSpacing , clientSize.x - dev_x , i*lineSpacing );
+       }
+
+        // Draw vertical rules if required
+        if ((GetWindowStyle() & wxLC_VRULES) && (GetItemCount() > 0))
+        {
+            int col = 0;
+            wxRect firstItemRect;
+            wxRect lastItemRect;
+            GetItemRect(0, firstItemRect);
+            GetItemRect(GetItemCount() - 1, lastItemRect);
+            int x = firstItemRect.GetX();
+            dc.SetPen(pen);
+            dc.SetBrush(* wxTRANSPARENT_BRUSH);
+            for (col = 0; col < GetColumnCount(); col++)
+            {
+                int colWidth = GetColumnWidth(col);
+                x += colWidth ;
+                dc.DrawLine(x - dev_x, firstItemRect.GetY() - 1 - dev_y, x - dev_x, lastItemRect.GetBottom() + 1 - dev_y);
+            }