蓋上筆電的螢幕時,如何讓筆電繼續工作?


n  根據個人經驗,你可能會因為以下原因,需要在筆電的螢幕蓋上時,還需要它繼續維持在工作狀態 :

1. 外接螢幕:當筆電有外接螢幕時,可能會把筆電蓋上,這樣可以專注於外接螢幕上的工作。 

2. 伺服器用途:有些人會使用筆電作為小型伺服器,處理特定的任務,如文件共享、媒體伺服器或開發環境。

3. 節省空間:在空間有限的情況下,蓋上筆電可以節省桌面空間,同時仍然能夠利用筆電的計算能力。

4. 避免分心:有時候,使用者可能會蓋上筆電以避免被筆電螢幕上的通知或其他內容分心,專注於其他工作。

5. 保護隱私:在公共場所或辦公室環境中,蓋上筆電可以保護螢幕上的敏感資訊不被他人看到。    

n  在Windows系統上,當我們把筆電蓋上時,筆電可能會進入以下四種狀態之一:

1.  不進行動作:這種情況下,即使蓋上了螢幕,筆電會繼續運行,如下載文件或運行伺服器應用程式。

2.  睡眠模式(sleep mode):這是一種低功耗狀態,允許快速喚醒(較睡眠模式更快速)並繼續工作。

3. 休眠模式(hibernate mode):大多數筆電預設會在蓋上時進入休眠模式,以節省電力(較睡眠模式更省電),這樣也可以快速恢復工作狀態。

4. 關機

n  以上四種狀態,我們當然要選擇"不進行動作",才能讓我們蓋上筆電的螢幕時,能維持繼續工作的狀態。如果有此需求請依照以下步驟調整此設定:

1. 在Windows的[搜尋]欄輸入"控制台"

2. 點擊 [控制台]













3. 點擊[硬體和音效]










4. 點擊[電源選項]










5. 點擊[選擇蓋上螢幕時的行為] 










6. 在 [當我關閉筆記電腦螢幕時] 下拉選單中,將"電池使用中"和"一般電源"都選擇 [不進行動作] 。

7.  點擊[儲存變更]

完成此設定後,我們蓋上筆電螢幕時筆電就會繼續保持運行。

Read More »

如果在dataGridView中新增一個"序號"欄位,如何讓此欄位值自動編號?

要在dataGrudView中新增Seq欄位並自動編號如下圖,在此列出三種方式,可依照各自的情境擇一使用 :








可將自動編號邏輯加在dataGridView的以下事件中:(擇一使用) 

Read More »

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 »
>