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

  • Thread starter Thread starter LAX Girl
  • Ngày gửi Ngày gửi

LAX Girl

Chrono Trigger/Cross
Lão Làng GVN
Tham gia ngày
23/8/06
Bài viết
6,646
Reaction score
9,494
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 ?
 
Mình dùng C# 2k8 viết chương trình

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 ?
ý bạn là icon ở system tray? chứ o task bar thì this.Hide() là mất rồi mà
 
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:
ý bạn là icon ở system tray? chứ o task bar thì this.Hide() là mất rồi mà
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.
theo mình thì bạn đã cài đặt đú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
Form này như thế nào bạn có thể hướng dẫn mình một chút được không :)
 
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);
        }

    }
}
 
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
 
thử thế này xem


[/code]
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ả :-??
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

Bối bối có thể cho một file mẫu để mình xem nó như thế nào không :-?
 
nãy viết nhầm đóng gói thành cài đặt


-------------
form config dạng như thế này
attachment.php

như thế ,application sang máy nào cũng chạy đc
 

Attachments

  • g546.jpg
    g546.jpg
    50.6 KB · Đọc: 75
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#
 
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 :
key1=value1
key2=value2
 
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
 
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
 
attachment.php

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ả =((
 
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
 
ở 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!");
        }
 
attachment.php

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ả =((

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.
 
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)
Import bằng cách nào hả bạn ?
 
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
 
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
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 đề !
 
Back
Top