首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實作 QQ 自動登入器(二):設定視窗與輸入驗證

     編輯:關於C語言

設定視窗功能

`ConfigForm` 負責單一用戶的 QQ 號、密碼、登入模式(正常/隱身)、QQ 執行檔路徑的編輯與持久化。

核心 UI 邏輯

路徑選擇


private void txtPath_Click(object sender, EventArgs e)
{
    if (opfQQ.ShowDialog() == DialogResult.OK)
        txtPath.Text = opfQQ.FileName;
}

點擊文字框即彈出 `OpenFileDialog`,選取 `QQ.exe` 路徑。

輸入驗證


private bool ValidateInput()
{
    if (string.IsNullOrEmpty(txtUser.Text)) { txtUser.Focus(); return false; }
    if (string.IsNullOrEmpty(txtPwd.Text)) { txtPwd.Focus(); return false; }
    if (string.IsNullOrEmpty(txtPath.Text)) return false;
    return true;
}

必填欄位檢查,失敗時聚焦對應控件,回傳 `false` 阻止儲存。

載入現有設定


private void LoadInfo()
{
    var ui = SerializeHelper.DeserializeUserInfo();
    if (ui != null)
    {
        txtUser.Text = ui.Username;
        txtPwd.Text = ui.PassWord;
        cboType.SelectedIndex = ui.Type == "41" ? 0 : 1; // 41=正常, 40=隱身
        txtPath.Text = ui.Path;
    }
    else cboType.SelectedIndex = 0;
}

儲存並關閉


private void btnSave_Click(object sender, EventArgs e)
{
    var ui = new UserInfo
    {
        Username = txtUser.Text.Trim(),
        PassWord = txtPwd.Text,
        Type = cboType.Text == "正常" ? "41" : "40",
        Path = txtPath.Text
    };
    if (ValidateInput())
    {
        SerializeHelper.SerializeUserInfo(ui);
        Close();
    }
}

生命週期事件

  • `ConfigForm_Load` → `LoadInfo()`
  • `btnCancel_Click` → `Close()`

設計模式亮點

  • 關注點分離:UI 僅負責收集/顯示,持久化委派 `SerializeHelper`。
  • 資料實體 `UserInfo` 為純 POCO,無 UI 依賴,易測試、易遷移。
  • 登入模式對應 QQ 協定參數(`/stat:41|40`),封裝於實體層。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved