Hỏi về C# (nâng cao) | Anh chị em nào pro giúp mình với

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi LAX Girl, 9/4/11.

  1. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Mình dùng C# 2k8 viết chương trình
    Mình dùng SQL tạo Database
    Mình dùng Install shield tạo file setup


    Vấn đề của mình ở đây là :
    File dữ liệu export ra thành mdf rồi, package chung rồi, nhưng cài đặt vẫn bị lỗi.
    Nếu trong máy client chưa có SQL, báo lỗi
    Nếu trong máy đã có SQL, báo lỗi không có CSDL
    Nếu trong máy có cả SQL và CSDL, báo lỗi không truy cập được vào CSDL


    Vậy, bây giờ có phương pháp nào giúp đơn giản hóa quá trình cài đặt không ? Giúp mình với :(



    P/s : Còn một vấn đề nhỏ, là cái Form login, dùng lệnh this.Hide() rồi, nhưng nó chỉ Hide thôi, trên taskbar vẫn còn icon, làm sao để icon nó cũng hide luôn ? Khi nào tắt cái Main Form mới show lại icon và login form ?
     
  2. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    ý bạn là icon ở system tray? chứ o task bar thì this.Hide() là mất rồi mà
     
  3. Nighter

    Nighter

    Tham gia ngày:
    14/12/07
    Bài viết:
    2,295
    Nơi ở:
    HuyDesign.com
    theo mình thì bạn đã đóng gói đúng rồi ,tuy nhiên khi chuyển sang máy khác => tên sever ,user ,pass và 1 số thông số khác ko còn đúng nứa => lỗi
    cho nên ng` ta thường làm thêm 1 cái form config ,sau khi cài đặt ,form này yêu cầu ng` dùng xác nhận lại các thông số kể trên

    edite :viết nhầm đóng gói thành cài đặt
     
    Chỉnh sửa cuối: 10/4/11
  4. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Mình dùng this.Hide(), this.Close() đều không được, vẫn còn icon trên task bar, với win7 thì di chuyển chuột lên trên task bar vẫn thấy hiện thumbnail của khung Login.
    Form này như thế nào bạn có thể hướng dẫn mình một chút được không :)
     
  5. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    thử thế này xem
    Mã:
    using System;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    
    namespace Test
    {
        public partial class Form1 : Form
        {
            [DllImport("User32")]
            private static extern int ShowWindow(int hwnd, int nCmdShow);
            private const int SW_Show = 5;
            private const int SW_Hide = 0;
            private static int hWnd;
    
            public Form1()
            {
                InitializeComponent();
                //Application.
                Process[] processRunning = Process.GetProcesses(".");
                foreach (Process pr in processRunning)
                {
                    if (pr.MainWindowTitle == "Form1")
                    {
                        hWnd = pr.MainWindowHandle.ToInt32();
                    }
                }
            }
    
    
            private void button2_Click(object sender, EventArgs e)
            {
                ShowWindow(hWnd, SW_Show);
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                ShowWindow(hWnd, SW_Hide);
            }
    
        }
    }
    
    
     
  6. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    thử làm dạng 1 form config độc lập cho nhập các thông số rồi lưu ra file (ví dụ config.ini). trong chương trình khi kết nối csdl sẽ đọc và lấy thông số từ file này
     
  7. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Cái này đọc rồi, không có chú thích nên thú thực là mình không hiểu gì cả :-??
    Bối bối có thể cho một file mẫu để mình xem nó như thế nào không :-?
     
  8. Nighter

    Nighter

    Tham gia ngày:
    14/12/07
    Bài viết:
    2,295
    Nơi ở:
    HuyDesign.com
    nãy viết nhầm đóng gói thành cài đặt


    -------------
    form config dạng như thế này
    [​IMG]
    như thế ,application sang máy nào cũng chạy đc
     

    Các file đính kèm:

    • g546.jpg
      g546.jpg
      Kích thước:
      50.6 KB
      Đọc:
      75
  9. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    thực tế thì tên db, user, pass thường đc đặt trong connection string của file app.config. Sau này có thay đổi gì về db cũng chỉ cần sửa ở file này chứ ai lại sửa trong code bao giờ.
    Add app.config : Add > New Item > Application Configuration File
    Sử dụng thì search google, key là connectionstring app.config c#
     
  10. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    nếu là Web app thì làm như Kogo nói
    còn là App thường thì làm như mình vì có thể là người dùng tự cài đặt, nên làm 1 form config sẽ dễ chỉnh sửa hơn.
    file thì nội dung đơn giản :
     
  11. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    Web hay app cũng đều dùng file config mà, có điều web.config thì phức tạp hơn nhiều
    MS nó có hẳn 1 thư viện riêng cho việc config thì mình cứ dùng thôi, tội gì phải làm cách khác
     
  12. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Cám ơn bạn Nai tơ, bạn bối bối và bạn kogo, mình sẽ thử xem thế nào :D
     
  13. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    [​IMG]
    Có một vấn đề với cái form này, đó là không truyền dữ liệu vào cái Connect.cs được.
    Thông thường mình hay truyền lệnh bằng cách
    Form1 form = new Form1();
    form.ShowDialog();

    Có điều Connect.cs không phải là Form, nên không dùng được, thử các cách khác như public string, public form đều ko có kết quả =((
     
  14. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    Bạn xây dựng cái connect đấy là 1 class với các phương thức xử lý cho việc kết nối csdl, kiểu trả về xác định có kết nối thành công hay không
    trong code của login thì khởi tạo và truyền cho nó các tham số mà bạn nhập từ textbox như trên, thành công thì chuyển tới trạng thái sử dụng
     
  15. Kogo

    Kogo Youtube Master Race

    Tham gia ngày:
    28/7/09
    Bài viết:
    18
    ở Connect.cs bạn làm 1 method kiểu thế này
    Mã:
     class Connect
        {
            public bool doLogin(String dbName, String userName, String pass)
            {
                bool isLogin = false;
                System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
                // TODO: Modify the connection string
                conn.ConnectionString = "viết connecttion string với các param truyền vào";
                try
                {
                    conn.Open();
                    isLogin = true;
                }
                catch (Exception ex)
                {
                    isConnected = false;
                }
                finally
                {
                    conn.Close();
                }
                return isLogin;
            }
        }
    
    ở form login thì thế này
    Mã:
     private void btnLogin_Click(object sender, EventArgs e)
            {
                Connect connect = new Connect();
                bool isLogin = connect.doLogin(dbName.Text, userName.Text, pass.Text);
                if (isLogin == true)
                {
                    //Do something
                }
                else
                    MessageBox.Show("Can not connect to the server!");
            }
    
     
  16. thanhtungtnt

    thanhtungtnt You Must Construct Additional Pylons Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    8,843
    Nơi ở:
    Balamb City
    Tại sao cứ phải truyền vào connect.cs làm gì ? Mình chỉ sử dụng các hàm trong class đó thôi chứ ?
    Mình nghĩ bạn nên xử lý event click của nút đăng nhập như thế này :
    0. imports file connect.cs đó vào form này (connect.cs là class chứa các method xử lý việc connect thôi nhé, ko đc tồn tại các hằng số hay các biến cố định)
    1. Get các values của các textfield.
    2. Dùng các biến đó, tạo một connect ngay tại cái form đó luôn.
     
  17. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Import bằng cách nào hả bạn ?
     
  18. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    bạn học c sharp như thế nào vậy :D cơ bản mà
    class Connect bạn đặt trong 1 namespace
    ở trang nào dùng thì bạn import ở đầu như bthg là using tên namespace như mọi namespace thôi
     
  19. LAX Girl

    LAX Girl Liu Kang, Champion of Earthrealm GameOver Lão Làng GVN

    Tham gia ngày:
    23/8/06
    Bài viết:
    5,398
    Nơi ở:
    Wonder Land
    Bối bối cho mình xin cái nick Yahoo để nói chuyện với !
    Cả phòng học C# mà không đứa nào làm được nên mới lên đây hỏi :(
    Vừa có bạn thanh tùng ở trên nói chuyện Yahoo mà vẫn không giải quyết được vấn đề !
     
  20. Bối Bối

    Bối Bối C O N T R A

    Tham gia ngày:
    20/2/06
    Bài viết:
    1,859
    Nơi ở:
    Ha Noi, Vietnam,
    uhm :)
     
    Chỉnh sửa cuối: 13/4/11

Chia sẻ trang này