PDA

View Full Version : گفتگو: نمایش یک فرم فقط در لحظه ی اولین بار اجرای برنامه



rezapassword
پنج شنبه 02 آبان 1387, 17:08 عصر
دوستان سلام
میخوام فقط یک فرم مثل مثلا تنظیمات فقط در اولین بار اجرای برنامه نمایش داده بشه
باید چه کار کنم

mostafaaa
پنج شنبه 02 آبان 1387, 17:12 عصر
میتونی یه کلید توی رجیستری ایجاد کنی و همیشه موقع بالا اومدن برنامه مقدارش رو چک کنی .

rezapassword
پنج شنبه 02 آبان 1387, 22:04 عصر
مصتفا جان منو که میشناسی
شرمنده ولی کد لطفا
قربونت
ممنون

Morteza_s
جمعه 03 آبان 1387, 16:50 عصر
اول به صورت دستی یک شاخه جدید به نام FirstRun در شاخه HKEY_CURRENT_USER بساز
در این شاخه یک کلید به نام First از نوع String و با مقدار Yes درست کن

البته می تونی از نام های دیگه ایی هم استفاده کنی، زیاد مهم نیست
این کارها رو هنگام نصب برنامه باید انجام بدی، با استفاده از برنامه های ساخت ستاپ

حالا در رویداد لود فرم این کد رو بنویس:


Imports Microsoft.Win32
.
.
.

Dim rk As RegistryKey
rk = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("FirstRun", True)
If rk.GetValue("First") = "Yes" Then
MsgBox("!اولین اجرای برنامه")
rk.SetValue("First", "No")
End If

saghez
جمعه 03 آبان 1387, 19:19 عصر
فکر میکنم یک راه حل ساده تر این باشد یک متغییر گلوبال تعریف کنی و مقدار آن را هنگام لود شدن فرم از صفر به یک تغییر دهی(یا از فالس به ترو)

rezapassword
شنبه 04 آبان 1387, 09:04 صبح
دوست عزیز میشه کد اینو رو که میگی بزاری
اگه ساده تر باشه بهتره
ممنون

saghez
شنبه 04 آبان 1387, 14:16 عصر
فرض کنید که فرم یک فرم مادر باشد و فرم دو فرمی است که میخواهید تنها یک بار نمایش داده شود علامتهای ... منظور کدهای برنامه خودتان است .

Public Class Form1
Public Shared Load_Form_Control As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Load_Form_Control = False
..
...
....
....

End Sub
End Class



Public Class Form2

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Form1.Load_Form_Control = True Then Exit Sub
...
..
..
...
Form1.Load_Form_Control = True
End Sub
End Class

mostafaaa
شنبه 04 آبان 1387, 17:34 عصر
دوست من Saghez فکر میکنم منظور دوستمون RezaPassword رو بد متوجه شدید.
منظور از اولین اجرای برنامه اولین اجرا پس از نصب هستش. نه هر بار که اجرا میشه.
که اگر نه این کاری رو که شما میگید هر برنامه نویس مبتدی میدونه.
موفق باشید.

rezapassword
یک شنبه 05 آبان 1387, 10:14 صبح
حق با مصتفاست از شما هم منونم Saghez عزیز

rezapassword
جمعه 10 آبان 1387, 15:15 عصر
سلام دوستان
من یه مشکلی پیدا کردم
با این کد نمیشه!
ایا راه دیگه ایی نیست ؟

sepehr.net
جمعه 10 آبان 1387, 21:43 عصر
اگه خیلی با رجیستری مشکل داری و برنامت بانک اطلاعاتی داره همین کار را توی بانک انجام بدی یا اگه نداره میتونی تو یه فایل متنی قرار بدی

rezapassword
شنبه 11 آبان 1387, 08:47 صبح
میشه فایل متنی رو توضیح بدید

ali_md110
شنبه 11 آبان 1387, 22:46 عصر
به نظر من روش مصطفی جهت زخیره در رجیستری یک راه حل خوبیه
ولی اگر یه برنامه داشته باشیم که از بانک اطلاعاتی استفاده میکنه و ممکنه که از بانک پشتیبان گرفته باشیم
مثل یه برنامه Acounting زخیره کردن رویدادها درون بانک بهتر باشه چون اگر ویندوز خراب شد با تعویض اون و استفاده از نسخه پشتیبان دیکه نیازی به تنظیمات دوباره نیست
یک جدول بنام event درون پایکاه داده با یک فیلد بولی و تعدادی فیلد دیگه بستگی به نیاز برنامتون بسازید
سپس یک تابع برای درج رکورد بنویسید و این فیلد بولین رو توسط دستورات تابع true کنید و یک تابع از نوع بولین بنویسید برای چک کردن برنامه وقتی برنامه برای اولین بار لود شد بزارید در روال sub new یا form load چنانچه این تابع true برگرداند یعنی یکبار قبلا تنظیمات اجرا شده پس انصراف بده چنانچه false بود شما باید تنظیمات دوباره انجام بدید

rezapassword
یک شنبه 12 آبان 1387, 08:59 صبح
مشکل اینجاست که برناه دیتا نداره !
و این عمی باید در ریجستری ثبت بشه اما نه این طوری
چون برای باز کردن صفحه با مشکل بر میخورم
این عمل باید در فرم اصلی اتفاق بیوفته
و بعد فرم هاید بشه و فرم اولین اجرا بالا بیاد که چون فرم 1 همون فرم شروعه نه میشه کلوزش کرد نه هاید
من اینجا گیر کردم

منصور بزرگمهر
یک شنبه 12 آبان 1387, 09:07 صبح
سوالت را مطمئن نیستم فهمیده ام، ولی اگر منظورت فرمی فقط یک بار کلاً ابتدای برنامه اجرا بشود، در یک Module (ماجول) عمومی یک متد Sub Main ایجاد کند و از این متد یک فایل متنی بنویس و دفعات بعد فایل را بخوان که قبلاً فرم اجرا شده است یا خیر، و متد sub Main بعنوان start Up برنامه ات معرفی کن.

ali_md110
یک شنبه 12 آبان 1387, 18:08 عصر
ابتدا در قسمت جنرال imports کنید

Imports Microsoft.Win32

Private Sub Frmregistry_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim regKey As RegistryKey
Dim keyTop As RegistryKey = Registry.LocalMachine
Dim strvalue As String = 1 'رشته ورودی که باید در رجیستری در مسیر ثبت شود
'HKEY_LOCAL_MACHINE\SOFTWARE\MYapp\check مسیر رجیستری
regKey = keyTop.OpenSubKey("Software\MYapp\check", True)
If regKey Is Nothing Then
If MsgBox("ابتدا ثبت کنید", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
'چنانچه تایید شود عدد یک در رجیستری نوشته شده و پیغام نشان داده نمیشود
regKey = keyTop.CreateSubKey("Software\MYapp\check")
regKey.SetValue("check", strvalue, RegistryValueKind.String)
End If

End If
If Not regKey.GetValue("check", True, RegistryValueKind.String) = 1 Then
MsgBox("مرا نشان بده")
regKey.SetValue("check", strvalue, RegistryValueKind.String)
End If
End Sub