DataGridView的欄位名稱(HeaderText)如何換行(在Visual Studio IDE)?

我詢問ChatGPT這個問題,得到以下的答案:

在 Visual Studio IDE 中,您可以使用以下方法為 DataGridView 控制項的欄位標題換行:

  1. 打開 DataGridView 控制項的設計器,選中要換行的欄位。
  2. 在屬性視窗中,將 "HeaderText" 的值設置為您想要的文本,例如 "First Line\nSecond Line"。
  3. 按下 "Enter" 鍵確認更改,您應該可以看到欄位標題的文字已經換行了。

請注意,換行符 "\n" 是在 Windows 平台上的標準換行符號。如果您使用的是其他平台,可能需要使用不同的換行符號。

如果依照以上方法,在屬性視窗中加上\n,應該是不會看到換行的效果。以下是我實際操作成功的紀錄:

1. 如下圖,我們在HeaderText欄輸入 Line1\nLine2 或 Line1'\n'Line2 都不能換行。










2. 在Visual Studio IDE環境,尋找xxxxx.designer.cs檔案,並找到 .HeadText = "Line1Line2"; 如下圖,







3. 修改 .HeaderText = "Line1Line2" 為 .HeaderText = "Line1\nLine2";







4. 回到IDE環境下,我們可以看到DataGridView的欄位名稱已顯示兩行。

   但是HeaderText看到的還是Line1Line2,因為\n在純文字欄位下無法顯示出來。左側的資料行只顯示第一行Line1.




Read More »

LINE在電腦上無法執行,出現 “Windows 無法存取指定的裝置、路徑或檔案,您可能沒也適當的權限,所以無法存取該項目” 該怎麼辦?

錯誤訊息 :







從此錯誤的訊息看來,很明顯的是檔案出問題,可能是檔案被移除、損壞、權限不夠或被封鎖等原因。

Windows的支援網站對此錯誤指出以下原因 :

- 如果您的電腦上存在下列任何一種情況,就可能發生這個問題。

  1. 您沒有檔案或檔案位置的存取權限。
  2. 檔案的所在位置目前無法存取,例如網路位置,或是目前未連接到電腦的外部磁碟機。
  3. 檔案已經移動或遭到刪除。
  4. 檔案或捷徑已損毀。
  5. 檔案可能遭到 Windows 封鎖。
  6. 您的防毒軟體可能封鎖檔案。

解決方法在這個網站上也有詳細的說明,你可以點選這裡前往察看

如果你在經過權限更改、移除、重灌、更新LINE等的程序後,問題還是沒解決,可能的問題就是(大部分都是)被防毒軟體給封鎖了。

如果不想或沒有權限更改防毒軟體的設定,至少有兩個方法可以讓你在電腦上繼續使用LINE:

方法一是使用Microsoft Store(微軟提供的線上商店)所提供的LINE APP。

另一個方法是使用Chrome的擴充能所提供的LINE APP(同樣是上chrome 線上應用程式商店下載即可)。

以方法一為例(使用Microsoft Store所提供的LINE APP):

1. 因為此錯誤我們已無法使用既有的LINE,所以須將它移除,如下圖:


2. 進入以下網址,下載及新安裝LINE :









Read More »

[啟動]資料夾在哪裡? (讓Windows開機後自動執行你的程式)

某些有特定用途的電腦,例如傳真服務、檔案伺服器服務...,一開機後我們就要啟動這些服務的相關的程式和設定;或者我們希望電腦一開機就自動將常用的軟體或程式執行起來。如果有以上需求,我們可將這些程式或設定放在Windows的啟動資料匣,當Windows一啟動時,這些程式就會自動地被執行。

Windows 7 版本,在[程式集]下有一個[啟動]選項,我們很容易就可以找到它,只要將相關程式放到此資料夾就完成了,非常清楚簡單。

從Windows 10以後的版本,[啟動]選項就被隱藏起來了,偶爾要使用時還真不容易找到,以下就是尋找[啟動]資料夾的方法:

  • 系統的[啟動]資料夾(對所有的使用者都有效)
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
⊞ Win+R  > 輸入 shell:Common Startup


  • 個別使用者的[啟動]資料夾
C:\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
⊞ Win+R  > 輸入 shell:startup
Read More »

如何使用MailKit發送電子郵件?

最近發現有一支程式就唯獨在某台電腦上該程式內的e-mail就發不出去了,所以重新檢視一下收發電子郵件的程式及說明,發現在微軟的smtpClient Class文件中提到 SmtpClient Class 因不支援一些新的協議(protocol),在某些平台上已過時,不推薦在其他平台上使用。並指明改用 MailKit [備註1]或其他 Liberary。但是,如果平台上包含有.NET Standard 2.0(或更高版本)、.NET Framework 4 到 .NET Framework 4.8、.NET Core 仍可使用。[備註3]

所以就試著使用MailKit來收發電子郵件而不使用smtpClient Class,如下:

1. 在 Microsoft Visual Studio上安裝 MailKit

2. 使用 MailKit 發送電子郵件--C#程式範例

3. 相關參考文件

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. 在 Microsoft Visual Studio上安裝 MaiKit

第一次使用MailKit前須先安裝此套件[備註5],安裝步驟如下:

1.1 工具 > NuGet 套件管理員(N) > 管理方案的NuGet套件(N)…

1.2 在[瀏覽]下方的格子輸入mailkit > 點選[MailKit…項下載] > 出現右側[專案]名稱及是否[已安裝]資訊 > 勾選[專案] > 點選[安裝]。

1.3 點選[確定]繼續進行安裝。

1.4 [已安裝]訊息變為版本編號,表示安裝完成。


2. 使用 MailKit 發送電子郵件--C#程式範例
internal static bool SendEmailByMailKit(
    string FromName,    string FromAddress,
    string ToName,      string ToAddress,
    string CcName,      string CcAddress,
    string BccName,     string BccAddress,
    string SubjectText, string BodyText,    string AttachedFile)
{
    bool success = false;
    var message = new MimeMessage();
    var bodybuilder = new BodyBuilder();    // Using BodyBuilder for email content            
    //
    try
    {
        message.From.Add(new MailboxAddress(FromName, FromAddress));
        message.To.Add(new MailboxAddress(ToName, ToAddress));
        if(!string.IsNullOrEmpty(CcAddress))
            message.Cc.Add(new MailboxAddress(CcName, CcAddress));
        if (!string.IsNullOrEmpty(BccAddress))
            message.Bcc.Add(new MailboxAddress(BccName, BccAddress));
        message.Subject = "[TEST]" + SubjectText;                

        bodybuilder.TextBody = "[This is a plain text]\n\n" + BodyText;
        //or
        //bodybuilder.HtmlBody = "<b>[This is a html text]</b>" +  BodyText;

        if (!string.IsNullOrEmpty(AttachedFile))
            bodybuilder.Attachments.Add(AttachedFile);
        
        message.Body = bodybuilder.ToMessageBody();

        if(!string.IsNullOrEmpty(FromAddress))
        {
            string[] subs = FromAddress.Split('@');
            string mailhost = subs[1];

            var client = new MailKit.Net.Smtp.SmtpClient();
            client.Connect(mailhost, 587, MailKit.Security.SecureSocketOptions.None);
            // or 
            //client.Connect(mailhost, 25, MailKit.Security.SecureSocketOptions.None);
            client.Send(message);
            client.Disconnect(true);
            success = true;
        }                
    }
    catch (Exception e)
    {
        string errormessage = e.ToString();
        success = false;
    }            
    return success;
}
Read More »

如何操作Windows的文字檔(使用C#來建立、讀取、刪除檔案...)?

  •  如何判斷資料夾是否存在 :

if (System.IO.Directory.Exists(mypath))
    return true;
  • 如何建立一個資料夾:

Directory.CreateDirectory(mypath);

  • 如何建立一個文字檔並寫入一串文字:

if (!File.Exists(myfile))
{
    StreamWriter sw = File.CreateText(myfile);    //建立一個文字檔
    sw.WriteLine("my message...");                //寫入一串文字                      
    sw.Close();
}

  • 如何寫入一串文字到既有的文字檔內:

if (!File.Exists(myfile))
{
    StreamWriter sw = new StreamWriter(myfile, true);    //已存在的文字檔
    sw.WriteLine("my message...");                       //寫入一串文字               
    sw.Close(); }

  • 如何搬移檔案(將檔案搬到另一個資料夾):

File.Move(mySourcePathFile, myTargetPathFile);

  • 如何刪除一個檔案:

File.Delete(myfile);  

  • 如何讀取某一資料夾下的所有檔案:

string[] myfiles = System.IO.Directory.GetFiles(mypath);
foreach (string myfile in myfiles)
    myfilename = Path.GetFileName(myfile);    //myfile contains path & file.

  • 如何讀取檔案的內容(一次讀一行):

foreach (string line in File.ReadLines(myfile))

    string[] substring = line.Split(' ');

  • 如何判斷檔案內容是否為空白?

if (new FileInfo(myfilen).Length == 0)      
  retur true;  

  • 如何合併檔案路徑(資料夾)和檔名 :

string mypath = "...";
string myfile = "...";
string mypathfile = Path.Combine(mypath, myfile);

參考網站 : 檔案系統和登錄-c # 程式設計指南 | Microsoft Docs https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/file-system/



Read More »

SQL語法--如何取得日期及計算日期?

SQL取得日期需要透過特別的table,例如ORACLE資料庫要訪問DUAL table;DB2資料庫要訪問SYSDUMMY1 table。

以下以DB2為例,說明SYSDUMMY1 table及日期取得及計算的方法及範例:

  • SYSDUMMY1說明:
    • SYSDUMMY1是屬於系統內建的table,位於SYSIBM下,提供給SQL語句需要時使用,它的內容並不重要(從以下的例子可以發現)。
    • 我們只要利用SQL指令 SELECT * FROM SYSIBM.SYSDUMMY1 就可以看到它的內容。我們可以發現它的內容只有一筆資料,一個欄位,欄位名稱為IBMREQD其值為Y。
  • 取得各種形式的時間(如DATE, TIME, YEAR...),以目前的時間為例:

SELECT
  -- DATE & TIME
  CURRENT TIMESTAMP AS TIMESTAMP,
  CURRENT date AS DATE,
  CURRENT time AS TIME,
  -- YEAR
  YEAR(CURRENT TIMESTAMP) AS YEAR,
  -- MONTH
  MONTH(CURRENT TIMESTAMP) AS MONTH,
  MONTHNAME(CURRENT TIMESTAMP) AS MONTHNAME,     -- 傳回January, Febuary,...
  -- DAY
  DAY(CURRENT TIMESTAMP) AS DAY,                 -- 傳回本月的第幾天
  DAYS(CURRENT TIMESTAMP) AS DAYS,               -- 傳回自西元0001-1-1至此日期的天數
  DAYOFYEAR(CURRENT TIMESTAMP) AS DAYOFYEAR,     -- 傳回本年度的第幾天
  -- HOUR
  HOUR(CURRENT TIMESTAMP) AS HOUR,
  -- MINUTE
  MINUTE(CURRENT TIMESTAMP) AS MINUTE,
  -- SECOND
  SECOND(CURRENT TIMESTAMP) AS SECOND,
  MIDNIGHT_SECONDS(CURRENT TIMESTAMP) AS MIDNIGHT_SECONDS,-- 傳回當天零時到此時間的總秒數
  MICROSECOND(CURRENT TIMESTAMP) AS MICROSECOND,
  -- WEEK
  DAYNAME(CURRENT TIMESTAMP) AS DAYNAME,               -- 傳回Sunday, Monday,...
  DAYOFWEEK_ISO(CURRENT TIMESTAMP) AS DAYOFWEEK_ISO,   -- 傳回1到7, 週一為1,依此類推.
  DAYOFWEEK(CURRENT TIMESTAMP) AS DAYOFWEEK,           -- 傳回1到7, 週日為1,依此類推.
  WEEK_ISO(CURRENT TIMESTAMP) AS WEEK_ISO,             -- 傳回本年度的第幾週(1~53)
  WEEK(CURRENT TIMESTAMP) AS WEEK                      -- 傳回本年度的第幾週(1~54)
FROM SYSIBM.SYSDUMMY1
    • 取得各種形式的時間,執行結果如下:




  • 將字串轉換為日期的各種形式:
SELECT 
  DATE ('2022-03-15') AS DATE1,
  DATE ('03/15/2022') AS DATE2,
  TIME ('12:15:10') AS TIME1,
  TIME ('12.15.10') AS TIME2, 
  TIMESTAMP ('2022-03-15-12.00.00.000000') AS TIMESTAMP1,
  TIMESTAMP ('2022-03-15 12:00:00') AS TIMESTAMP2
FROM SYSIBM.SYSDUMMY1
    • 將字串轉換為日期,執行結果如下:




  • 日期計算的各種方法:
SELECT
  DAYS (CURRENT DATE) - DAYS (DATE('2022-03-10')) AS DAYS1,
  DATE('2022-03-15') - date('2022-03-10') AS DAYS2,
  DATE('2022-03-15') + 2 YEAR AS ADD_YEAR,
  DATE('2022-03-15') + 2 YEAR + 2 MONTH + 2 DAY AS ADD_YEAR_MONTH_DAY,
  TIME('12:15:10') + 2 HOURS + 2 MINUTES + 2 SECONDS AS ADD_HOUR_MINUTE_SEC
FROM SYSIBM.SYSDUMMY1
    • 日期的計算的各種方法,執行結果如下:




Read More »

如何將Windows 11工作列上的項目靠左?就像Windows 10 一樣...

 Windows 10 和 Windows 11 最明顯的差別是工作列上的所有項目都排在中間,剛使用的人可能會很不習慣,如果您想要把它更改為像 Windows 10 一樣靠左排列也是可以的,請看以下更改方法...

- Windows 11 預設將工作列上的項目都置中 ,如下圖:





- 將工作列上的項目改為置左(像Windows 10 一樣),如下圖:


- 更改方法,只要改一個設定,步驟如下:

  1. 在工作列上按滑鼠右鍵 > 選擇[工作列設定]
  2. 往下找[工作列行為] > [工作列對齊] > 右側欄位將[置中]改為[左] 如下圖即可。

Read More »

SQL教學及學習的參考的網站

 SQL教學及學習的參考的網站:




SQL 教程,含 SQL 簡介、SQL 的歷史、SQL 的使用等等。 
無論您是一位 SQL 的新手,或是一位只是需要對 SQL 複習一下的資料倉儲業界老將,您就來對地方了。這個 SQL 教材網站列出常用的 SQL 指令。
分類方式列出常用的 SQL基礎語法方便讀者入門。
瞭解如何在內部部署和雲端中使用 SQL Server 和 Azure SQL。
將教您如何在 MySQL、SQL Server、MS Access、Oracle、Sybase、Informix、Postgres 和其他數據庫系統中使用 SQL。其特色之一是含有練習題。
提供了成功構建數據庫和編寫 SQL 查詢所需的所有資料。有語法、查詢解釋和利用圖形來讓你更容易的地了解。 除此之外,還有數百個帶有在線編輯器和測驗的練習。因此,您可以在不離開瀏覽器的情況下練習概念和查詢。
將可以學到如何使用 SQL 訪問和處理資料系統中的資料,這類資料庫包括:MySQL、SQL Server、Access、Oracle、Sybase、DB2 等等。 
Db2 for z/OS 的SQL的參考,包括 SQL PL。 除非另有說明,否則本書中對 SQL說明針對及適用於Db2 for z/OS 。 
包含有關以下主題的訊息:資料庫概念、內建函數、內建全域變量、語句和查詢、SQL PL & CL、限制、使用 C,Java,COBOL,REXX 和一般外部例程進行程式撰寫
SQL 傳回碼 (SQLSTATE)、CCSID。

 





 

 

Read More »

MS Outlook 傳送的郵件不見了,怎麼辦?

一般來說郵件傳送後,郵件會先到[寄件匣],寄送出去後就會到 [寄件備份]。如果傳送後在這兩個資料匣沒發現這封郵件,我們可能會懷疑我的郵件是否已寄出,或者會懷疑MS Outlook有問題!如果有此疑問,有關已寄郵件的設定一定要先了解。

因為 MS Outlook 使用 Exchange 通訊協定,Exchange 通訊協定可讓您變更已寄郵件的儲存位置[註一][註二]。

  • 所以如果遇到這樣的問題,我們可以檢查一下 [在[寄件備份]資料夾儲存郵件副本(V)]是否啟用,步驟如下:

選取 MS Outlook的[檔案] >  [選項] >  [郵件] > 勾選在[儲存郵件]下的[在[寄件備份]資料夾儲存郵件副本(V)],如下圖。


  • 或是開啟一封新的郵件 ,裡面的[選項]也有此資訊,我們可以透過以下的步驟及說明查看目前寄出郵件的處置的狀態: 
檢視步驟 :
[新增電子郵件] > [選項] > [儲存寄件備份到] > 如下圖。


以上[儲存寄件備份到]下的各選項說明:
  • [使用預設資料夾(U)]:表示[在[寄件備份]資料夾儲存郵件副本(V)]已開啟,已寄出的郵件將儲存到 [寄件備份]。
  • [不儲存(D)] :表示[在[寄件備份]資料夾儲存郵件副本(V)]未開啟,已寄出的郵件將不會儲存到任何資料夾。
  • [其他資料夾(O)]:透過此選項,可以指定這封郵件寄出後儲存至某一資料匣。

註一 : 也可以參考微軟有關 變更儲存已傳送電子郵件訊息的位置 的說明。
Read More »

MS Outlook的資料夾不見了,怎麼辦?

如果你是MS Outlook的重度使用者,一定會建立很多的資料夾,然後將自己的email分門別類的歸檔。但是如果某天發現重要的資料夾不見了,請先別慌,很可能您不小心把它移到別處。您可以用以下方法找到此資料夾,再將它移回正確位置。

這裡提供兩種方法來找您那不見的資料夾 : 

方法1:透過[資料檔屬性]找到資料夾的位置
例如,我們要找資料夾Vendors,步驟如下:
1.1 在某一[資料檔]上按滑鼠右鍵 > 按[資料檔案屬性] 

1.2 再按[資料夾大小]

 

1.3 [資料夾大小]的視窗會出現這個資料檔內的的所有資料夾,所以我們很容易就發現我們要找的資料夾Vendors,如下圖。 


方法2:利用搜尋(某一封郵件)功能找出資料夾的位置
同上例,我們要找資料夾Vendors,先利用vulnerability找到此資料夾下的一封email,如以下步驟:
2.1 在此以搜尋[vulnerability]為例,搜尋對象改為[所有Outlook項目] 

2.2 將搜尋到的email開啟,如下圖 

2.3 在搜尋到的email上(如上圖)按ctrl+shift+F,就出現這封email的資料夾Vendors,再點選[瀏覽]。 

2.4 即可看到我們要找的資料夾所在的位置,如下如。

Read More »
>