星期二, 4月 26, 2016

[C#] Reflection - Assembly GUID 資訊

實務上有需求要抓出 Assembly GUID 資訊,簡易紀錄
  • DemoEXE:開來抓 GUID 用,本身沒有寫任何 Code
  • DemoShowGUID:要在這裡抓 DemoEXE 和本身的 GUID 資訊
Reflection-Assembly GUID 資訊-4

using System.Runtime.InteropServices;
using System.Reflection;

namespace DemoShowGUID
{
    class Program
    {
        static void Main(string[] args)
        {
   
            // DemoEXE GUID:3088714c-9fa3-4d6a-8a00-2e743b93c09b
            string path = @"D:\Reflection_AssemblyInfo\DemoEXE\bin\Debug\DemoEXE.EXE";
            string DemoEXEInfo = ((GuidAttribute)Assembly.LoadFrom(path).GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value;

            // 抓本身 DemoShowGUID GUID:6fa73d73-6533-4d4c-9fcb-100a6b43b0cc
            string DemoShowInfo = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value;

            string message =
                "DemoEXE GUID 資訊:" + DemoEXEInfo + Environment.NewLine +
                "DenoShowInfo GUID 資訊:" + DemoShowInfo;
            Console.WriteLine(message);
        }
    }
}

DemoEXE Assembly 資訊

Reflection-Assembly GUID 資訊-1

DemoShowGUID Assembly 資訊

Reflection-Assembly GUID 資訊-2

結果
Reflection-Assembly GUID 資訊-3

星期三, 4月 20, 2016

[C#] DataGridView - 取消自動排序功能

網路問題
我想要把點colmun上面的箭頭排序消失或是點了以後不會排序,請問要怎麼做?謝謝!!!
一直覺得 DataGridView 自動排序功能很好用,沒想到要讓欄位不能排序,看到問題當下,自己也沒有頭緒要怎麼做,哈

在 DataGridView 內的 DataGridViewColumn 找到 SortMode Property,把它設為 NotSortable 就可以取消自動排序功能

DataGridViewColumn.SortMode 預設為 Automatic

DataGridViewColumn.SortMode 設定為 NotSortable


DataGridViewColumn 的排序功能就會取消


用語法改全部的 DataGridViewColumn SortMode Property
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
    col.SortMode = DataGridViewColumnSortMode.NotSortable;
}
  • 20160723
閱讀 Visual Studio 2005 檔案 IO 與資料存取秘訣 書籍時發現,假如是
  1. DataGridViewCheckBoxColumn
  2. DataGridViewComboBoxColumn
  3. DataGridViewImageColumn
時,排序功能就顯的有點奇怪,可以考慮把該些欄位的排序功能取消

星期四, 4月 14, 2016

[C#] MDI 子視窗最大化只顯示關閉按鈕

WinForm MDI 模式下,子視窗最大化情況下,會出現[最小化]、[還原]和[關閉] 這三個 Button(之後簡稱系統按鈕),但只希望出現 [關閉] Button 就好

[C#] MDI 子視窗最大化只顯示關閉按鈕-1

嘗試過
  1. 子視窗的 [MaximizeBox = false 和 MinimizeBox = false] 或 [FormBorderStyle = FormBorderStyle.None],該兩種設定在子視窗非最大化的情況下是會有作用,但子視窗最大化後,還是會出現系統按鈕
  2. 子視窗的 ControlBox 設為 false,不論子視窗是否最大化,都不會出現系統按鈕,但是子視窗在最大化情況下,沒有標題列

星期三, 4月 13, 2016

[VFP] 載入印表機驅動程式時發生錯誤

Win10 PC 上透過 ERP 直接進圖檔列印時,會發生下面錯誤訊息

依據錯誤訊息,直覺當然是 Driver 出問題,有去下載官方最新的 Win10 Driver 也是會發生同樣的錯誤訊息,直接對印表機(不透過 VFP 撰寫的 ERP)列印是 OK 的,Orz

閱讀該篇文章 錯誤: 「 錯誤載入印表機驅動程式 」 的印表機名稱中有空格,確定該印表機沒有共享,名稱內也沒有空格,但因為辦公室內有同型號列印設備,為了方便辨識,所以在印表機名稱上有中文名稱,如下圖

後來把中文改為英文來辨識印表機,VFP 就可以正常進行列印,>.< ~~

目前發生過該情況的印表機有
  • HP LaserJet Pro400 M401n
  • HP LaserJet Pro400 M401dne
剛好都算是同系列印表機,不過 Win7 PC 卻沒有該現象,^^''

星期四, 4月 07, 2016

[LINQ] OrderBy - 自訂排序

LINQ OrderBy 自訂排序的簡單練習
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // A 和 B 小寫在前面;C 和 D 大寫在前面
            List<String> demo = new List<String>()
            {
                "a" , "A" , 
                "b" , "B" , 
                "C" , "c" ,
                "D" , "d"
            };

            // 區分大小寫
            var result = demo.OrderBy(e => e);

            // 不區分大小寫
            var result = demo.OrderBy(e => e , StringComparer.CurrentCultureIgnoreCase);

            // 自訂排序
            var result = demo.OrderBy(e => e, new CustomOrder());

            foreach (var item in result)
            {
                Console.WriteLine(item.ToString());
            }
        }
    }

    /// 
    /// 把大寫 C 放在最前面,其它不區分大小寫
    /// 
    public class CustomOrder : IComparer<String>
    {
        public int Compare(string x, string y)
        {
            if (x.Equals("C")) return -1;
            else if (y.Equals("C")) return 1;

            return string.Compare(x, y  , true);
            // 或
            return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
        }
    }
}
區分大小寫

[LINQ] OrderBy - 自訂排序-1

不區分大小寫

[LINQ] OrderBy - 自訂排序-2

自訂排序

[LINQ] OrderBy - 自訂排序-3

星期三, 4月 06, 2016

[SSRS] TextBox 文字方向

製作報表需要把文字從左向右呈現改為,由上往下來閱讀,就很直覺屬性視窗內找 Orientation 或 Rotation 這兩個關鍵字,沒想到竟然都沒有,後來查到這篇 MSDN 文章:設定文字方塊方向,才發現要找 WritingMode 屬性才對,Orz

TextBox WritingMode Property
  • Horizontal:從左往右閱讀文字
  • Vertical:從上往下閱讀文字
  • Rotate270:從下往上閱讀文字

各個設定值的設定效果

星期五, 4月 01, 2016

[VS] 中斷點 - Lambda Express

閱讀 揭開 LINQ 的神秘面紗 - 建置 Any、Count 和 Sum 時,有提到可以在 Lambda Express 內下中斷點

[VS] 中斷點 - Lamdba Express-1

也就是在滑鼠指標放在 x + y 前,然後按下 F9 或是滑鼠右鍵 => 中斷點 => 插入中斷點來進行設定

[VS] 中斷點 - Lamdba Express-2

區域變數視窗

[VS] 中斷點 - Lamdba Express-3

課程測驗

[VS] 中斷點 - Lamdba Express-4