PDA

View Full Version : startup object ?



zoen
16-02-2003, 14:06
Xin hỏi trong VB.NET có thể startup một class không phải là form được không, sau đó bên trong một method của class này ta mới declare f as formClass và gọi method Show của nó ?

Mình có thử dùng Sub Main trong một module nhưng khi ra khỏi sub main thì đối tượng form cũng bị destroy vì không khai báo global được.

Cảm ơn nhiều !

xbacala
16-02-2003, 18:26
bản thân class không thể chạy được vì nó phải được instance thành object mới thực thi được.

Không thể chọn start up là class được đâu bạn ơi !
Khai báo biến form ở tầm vực global thì truy xuất được chứ, làm sao mất được !

consoilangthang
17-02-2003, 12:10
VB.NET hide nhiều quá (kể cả message loop Application.Run()) nên không biết có cách nào như bạn muốn hay không, còn trong C# khai báo một entry point cho class như sau :

public static void/int Main()

thế là chạy tốt, không nhất thiết phải là form.

Ở VB.NET, có lẽ dạng Sub Main là một interface cho kiểu khai báo trên (Windows application without UI), vậy Sub Main này là mạch chính của chương trình, chương trình sẽ kết thúc khi thực thi đến dòng End Sub.

tớ là kẻ mù tịt VB.NET, nên đừng chê bai, vô ích :D.

consoilangthang
17-02-2003, 12:18
bổ sung một tí, nếu dùng frm.Show() trong Sub Main mà có hiện tượng flash form rồi tắt ngóm thì bạn có thể thử dùng method frm.ShowDialog(), vậy form này sẽ là main form.

tớ là kẻ mù tịt VB.NET, nên đừng chê bai, vô ích :D.

White_Rose
17-02-2003, 21:27
Mình nghĩ ý của zoen là làm thế nào để chỉ sử dụng một class mà có thể chạy giống như Form, nghĩa là khi nào user muốn đóng thì mới close chứ không phải là chạy được một đoạn code thì close.
Nếu ý bạn là như vậy thì bạn thử đoạn code sau xem sao:


public class MyClass
{
public void Main()
{
private bool _exit = false;
frm.Show();
while(_exit)
{
//...... _exit = true;
}
}
}

Nhưng mình không tìm ra lý do để phải làm như vậy.

To consoilangthang: Rất cám ơn bạn vì bài trả lời bữa trước. Nó giúp mình "tỉnh ra" rất nhiều.

zoen
18-02-2003, 09:16
Cảm ơn các bạn, riêng bài của xBacala theo ý bạn mình đã làm như sau nhưng nó chỉ chạy và thoát ngay :

// start.vb

1 Option Explicit On
2
3 Module start
4 Dim f As New Form()
5
6 Public Sub main()
7 f.Show()
8 End Sub
9 End Module

consoilangthang
18-02-2003, 12:45
zoen@ này, thay method Show() bằng ShowDialog() sẽ ổn thôi. Mạch Sub Main của bạn sẽ bị chặn lại tại đó và chỉ continue (& also end) khi main form (modal) bị close.

to White_Rose@: cách của bạn làm cho code... xấu xí quá (j/k) :D và entry point Main phải là static mới được.

Đồng ý với White_Rose@, đúng là không có lý do nào để thiết kế như vậy, trừ phi zoen@ cần làm một số tasks trước khi create main form.

C# tuyệt hơn VB(.NET) nhiều chứ, White_Rose@ ? Code của bạn cho thấy rằng bạn đang migrate từ VB background sang C#...