reza_edu
چهارشنبه 08 دی 1389, 23:06 عصر
سلام به همه مهندسان گرامی
ابتدا باید بگم که من درمورد این موضوع تو سرچینگ سایت جستجو نکردم تا ببینم قبلا مطرح شده یانه . اما گفتم که من هم بگم شاید ضرر نداشته باشه پس از مدیران این تالار پوزش میخوام اگه دوباره کاری شده.
حالا بگم چرا این موضوع رو مطرح کردم من خودم دراصل vb کار هستم اما خوب مثل دیگر برنامه نویسان هرپروژه ای به زبان های .net به پستم بخوره کار میکنم تو یه برنامه با #c مجبور شدم تا داده هارو مثل vb.net از inputbox بگیرم هرچی تو خود msdn گشتم دیدم که نه مثل اینکه #c آماده همچین چیزی نداره(یا من کم دقتی کردم و متوجه نشدم) خلاصه کنم با کمی گشت و گذار تو سایت های دیگر (انگلیسی) کلاسی رو دیدم که برایمن بسیار جالب بود خواستم اون رو تو برنامه نویس بزارم تا دیگر دوستان هم بتونن استفاده کنن.
اول یه کلاس به نام inputbox تو برنامه درست کنید و کد زیر رو توش قرار بدید:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication1
{
#region InputBox return result
/// <summary>
/// Class used to store the result of an InputBox.Show message.
/// </summary>
public class InputBoxResult
{
public DialogResult ReturnCode;
public string Text;
}
#endregion
/// <summary>
/// Summary description for InputBox.
/// </summary>
public class InputBox
{
#region Private Windows Contols and Constructor
// Create a new instance of the form.
private static Form frmInputDialog;
private static Label lblPrompt;
private static Button btnOK;
private static Button btnCancel;
private static TextBox txtInput;
public InputBox()
{
}
#endregion
#region Private Variables
private static string _formCaption = string.Empty;
private static string _formPrompt = string.Empty;
private static InputBoxResult _outputResponse = new InputBoxResult();
private static string _defaultValue = string.Empty;
private static int _xPos = -1;
private static int _yPos = -1;
#endregion
#region Windows Form code
private static void InitializeComponent()
{
// Create a new instance of the form.
frmInputDialog = new Form();
lblPrompt = new Label();
btnOK = new Button();
btnCancel = new Button();
txtInput = new TextBox();
frmInputDialog.SuspendLayout();
//
// lblPrompt
//
lblPrompt.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right)));
lblPrompt.BackColor = SystemColors.Control;
lblPrompt.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((Byte)(0)));
lblPrompt.Location = new Point(12, 9);
lblPrompt.Name = "lblPrompt";
lblPrompt.Size = new Size(302, 82);
lblPrompt.TabIndex = 3;
//
// btnOK
//
btnOK.DialogResult = DialogResult.OK;
btnOK.FlatStyle = FlatStyle.Popup;
btnOK.Location = new Point(326, 8);
btnOK.Name = "btnOK";
btnOK.Size = new Size(64, 24);
btnOK.TabIndex = 1;
btnOK.Text = "&OK";
btnOK.Click += new EventHandler(btnOK_Click);
//
// btnCancel
//
btnCancel.DialogResult = DialogResult.Cancel;
btnCancel.FlatStyle = FlatStyle.Popup;
btnCancel.Location = new Point(326, 40);
btnCancel.Name = "btnCancel";
btnCancel.Size = new Size(64, 24);
btnCancel.TabIndex = 2;
btnCancel.Text = "&Cancel";
btnCancel.Click += new EventHandler(btnCancel_Click);
//
// txtInput
//
txtInput.Location = new Point(8, 100);
txtInput.Name = "txtInput";
txtInput.Size = new Size(379, 20);
txtInput.TabIndex = 0;
txtInput.Text = "";
//
// InputBoxDialog
//
frmInputDialog.AutoScaleBaseSize = new Size(5, 13);
frmInputDialog.ClientSize = new Size(398, 128);
frmInputDialog.Controls.Add(txtInput);
frmInputDialog.Controls.Add(btnCancel);
frmInputDialog.Controls.Add(btnOK);
frmInputDialog.Controls.Add(lblPrompt);
frmInputDialog.FormBorderStyle = FormBorderStyle.FixedDialog;
frmInputDialog.MaximizeBox = false;
frmInputDialog.MinimizeBox = false;
frmInputDialog.Name = "InputBoxDialog";
frmInputDialog.ResumeLayout(false);
}
#endregion
#region Private function, InputBox Form move and change size
static private void LoadForm()
{
OutputResponse.ReturnCode = DialogResult.Ignore;
OutputResponse.Text = string.Empty;
txtInput.Text = _defaultValue;
lblPrompt.Text = _formPrompt;
frmInputDialog.Text = _formCaption;
// Retrieve the working rectangle from the Screen class
// using the PrimaryScreen and the WorkingArea properties.
System.Drawing.Rectangle workingRectangle = Screen.PrimaryScreen.WorkingArea;
if ((_xPos >= 0 && _xPos < workingRectangle.Width - 100) && (_yPos >= 0 && _yPos < workingRectangle.Height - 100))
{
frmInputDialog.StartPosition = FormStartPosition.Manual;
frmInputDialog.Location = new System.Drawing.Point(_xPos, _yPos);
}
else
frmInputDialog.StartPosition = FormStartPosition.CenterScreen;
string PrompText = lblPrompt.Text;
int n = 0;
int Index = 0;
while (PrompText.IndexOf("\n", Index) > -1)
{
Index = PrompText.IndexOf("\n", Index) + 1;
n++;
}
if (n == 0)
n = 1;
System.Drawing.Point Txt = txtInput.Location;
Txt.Y = Txt.Y + (n * 4);
txtInput.Location = Txt;
System.Drawing.Size form = frmInputDialog.Size;
form.Height = form.Height + (n * 4);
frmInputDialog.Size = form;
txtInput.SelectionStart = 0;
txtInput.SelectionLength = txtInput.Text.Length;
txtInput.Focus();
}
#endregion
#region Button control click event
static private void btnOK_Click(object sender, System.EventArgs e)
{
OutputResponse.ReturnCode = DialogResult.OK;
OutputResponse.Text = txtInput.Text;
frmInputDialog.Dispose();
}
static private void btnCancel_Click(object sender, System.EventArgs e)
{
OutputResponse.ReturnCode = DialogResult.Cancel;
OutputResponse.Text = string.Empty; //Clean output response
frmInputDialog.Dispose();
}
#endregion
#region Public Static Show functions
static public InputBoxResult Show(string Prompt)
{
InitializeComponent();
FormPrompt = Prompt;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title, string Default)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
DefaultValue = Default;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title, string Default, int XPos, int YPos)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
DefaultValue = Default;
XPosition = XPos;
YPosition = YPos;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
#endregion
#region Private Properties
static private string FormCaption
{
set
{
_formCaption = value;
}
} // property FormCaption
static private string FormPrompt
{
set
{
_formPrompt = value;
}
} // property FormPrompt
static private InputBoxResult OutputResponse
{
get
{
return _outputResponse;
}
set
{
_outputResponse = value;
}
} // property InputResponse
static private string DefaultValue
{
set
{
_defaultValue = value;
}
} // property DefaultValue
static private int XPosition
{
set
{
if (value >= 0)
_xPos = value;
}
} // property XPos
static private int YPosition
{
set
{
if (value >= 0)
_yPos = value;
}
} // property YPos
#endregion
internal static object show(string p)
{
throw new NotImplementedException();
}
}
}
خوب حالا به برنامه اصلی برید و فضای نام زیر رو به برنامه اضافه کنید :
using WindowsApplication1;
خوب حالا برای استفاده آماده است یه تیکه کد مثال هم (تیکه کده کامل نیست) میزارم تا نحوه استفاده رو نشون بده :
str[i] = Convert.ToString(InputBox.Show("كاربر گرامي نام داده هاي سال" + (i + 1) + " را وارد كنيد ", "ورود اطلاعات").Text);
امید وارم که این مطلب مفید باشه. فقط خواهشن یه نظر سنجی میزارم توش شرکت کنید خواهشن چون من تو تالار vb.net مطلبی گذاشتم از 70 نفر فقط 5 نفر شرکت کرن شماکه داری مطلب رو میخونی حداقل موقع بیرون رفتن یه نظر بدی بد نیست. با تشکر.:خجالت:
ابتدا باید بگم که من درمورد این موضوع تو سرچینگ سایت جستجو نکردم تا ببینم قبلا مطرح شده یانه . اما گفتم که من هم بگم شاید ضرر نداشته باشه پس از مدیران این تالار پوزش میخوام اگه دوباره کاری شده.
حالا بگم چرا این موضوع رو مطرح کردم من خودم دراصل vb کار هستم اما خوب مثل دیگر برنامه نویسان هرپروژه ای به زبان های .net به پستم بخوره کار میکنم تو یه برنامه با #c مجبور شدم تا داده هارو مثل vb.net از inputbox بگیرم هرچی تو خود msdn گشتم دیدم که نه مثل اینکه #c آماده همچین چیزی نداره(یا من کم دقتی کردم و متوجه نشدم) خلاصه کنم با کمی گشت و گذار تو سایت های دیگر (انگلیسی) کلاسی رو دیدم که برایمن بسیار جالب بود خواستم اون رو تو برنامه نویس بزارم تا دیگر دوستان هم بتونن استفاده کنن.
اول یه کلاس به نام inputbox تو برنامه درست کنید و کد زیر رو توش قرار بدید:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace WindowsApplication1
{
#region InputBox return result
/// <summary>
/// Class used to store the result of an InputBox.Show message.
/// </summary>
public class InputBoxResult
{
public DialogResult ReturnCode;
public string Text;
}
#endregion
/// <summary>
/// Summary description for InputBox.
/// </summary>
public class InputBox
{
#region Private Windows Contols and Constructor
// Create a new instance of the form.
private static Form frmInputDialog;
private static Label lblPrompt;
private static Button btnOK;
private static Button btnCancel;
private static TextBox txtInput;
public InputBox()
{
}
#endregion
#region Private Variables
private static string _formCaption = string.Empty;
private static string _formPrompt = string.Empty;
private static InputBoxResult _outputResponse = new InputBoxResult();
private static string _defaultValue = string.Empty;
private static int _xPos = -1;
private static int _yPos = -1;
#endregion
#region Windows Form code
private static void InitializeComponent()
{
// Create a new instance of the form.
frmInputDialog = new Form();
lblPrompt = new Label();
btnOK = new Button();
btnCancel = new Button();
txtInput = new TextBox();
frmInputDialog.SuspendLayout();
//
// lblPrompt
//
lblPrompt.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right)));
lblPrompt.BackColor = SystemColors.Control;
lblPrompt.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((Byte)(0)));
lblPrompt.Location = new Point(12, 9);
lblPrompt.Name = "lblPrompt";
lblPrompt.Size = new Size(302, 82);
lblPrompt.TabIndex = 3;
//
// btnOK
//
btnOK.DialogResult = DialogResult.OK;
btnOK.FlatStyle = FlatStyle.Popup;
btnOK.Location = new Point(326, 8);
btnOK.Name = "btnOK";
btnOK.Size = new Size(64, 24);
btnOK.TabIndex = 1;
btnOK.Text = "&OK";
btnOK.Click += new EventHandler(btnOK_Click);
//
// btnCancel
//
btnCancel.DialogResult = DialogResult.Cancel;
btnCancel.FlatStyle = FlatStyle.Popup;
btnCancel.Location = new Point(326, 40);
btnCancel.Name = "btnCancel";
btnCancel.Size = new Size(64, 24);
btnCancel.TabIndex = 2;
btnCancel.Text = "&Cancel";
btnCancel.Click += new EventHandler(btnCancel_Click);
//
// txtInput
//
txtInput.Location = new Point(8, 100);
txtInput.Name = "txtInput";
txtInput.Size = new Size(379, 20);
txtInput.TabIndex = 0;
txtInput.Text = "";
//
// InputBoxDialog
//
frmInputDialog.AutoScaleBaseSize = new Size(5, 13);
frmInputDialog.ClientSize = new Size(398, 128);
frmInputDialog.Controls.Add(txtInput);
frmInputDialog.Controls.Add(btnCancel);
frmInputDialog.Controls.Add(btnOK);
frmInputDialog.Controls.Add(lblPrompt);
frmInputDialog.FormBorderStyle = FormBorderStyle.FixedDialog;
frmInputDialog.MaximizeBox = false;
frmInputDialog.MinimizeBox = false;
frmInputDialog.Name = "InputBoxDialog";
frmInputDialog.ResumeLayout(false);
}
#endregion
#region Private function, InputBox Form move and change size
static private void LoadForm()
{
OutputResponse.ReturnCode = DialogResult.Ignore;
OutputResponse.Text = string.Empty;
txtInput.Text = _defaultValue;
lblPrompt.Text = _formPrompt;
frmInputDialog.Text = _formCaption;
// Retrieve the working rectangle from the Screen class
// using the PrimaryScreen and the WorkingArea properties.
System.Drawing.Rectangle workingRectangle = Screen.PrimaryScreen.WorkingArea;
if ((_xPos >= 0 && _xPos < workingRectangle.Width - 100) && (_yPos >= 0 && _yPos < workingRectangle.Height - 100))
{
frmInputDialog.StartPosition = FormStartPosition.Manual;
frmInputDialog.Location = new System.Drawing.Point(_xPos, _yPos);
}
else
frmInputDialog.StartPosition = FormStartPosition.CenterScreen;
string PrompText = lblPrompt.Text;
int n = 0;
int Index = 0;
while (PrompText.IndexOf("\n", Index) > -1)
{
Index = PrompText.IndexOf("\n", Index) + 1;
n++;
}
if (n == 0)
n = 1;
System.Drawing.Point Txt = txtInput.Location;
Txt.Y = Txt.Y + (n * 4);
txtInput.Location = Txt;
System.Drawing.Size form = frmInputDialog.Size;
form.Height = form.Height + (n * 4);
frmInputDialog.Size = form;
txtInput.SelectionStart = 0;
txtInput.SelectionLength = txtInput.Text.Length;
txtInput.Focus();
}
#endregion
#region Button control click event
static private void btnOK_Click(object sender, System.EventArgs e)
{
OutputResponse.ReturnCode = DialogResult.OK;
OutputResponse.Text = txtInput.Text;
frmInputDialog.Dispose();
}
static private void btnCancel_Click(object sender, System.EventArgs e)
{
OutputResponse.ReturnCode = DialogResult.Cancel;
OutputResponse.Text = string.Empty; //Clean output response
frmInputDialog.Dispose();
}
#endregion
#region Public Static Show functions
static public InputBoxResult Show(string Prompt)
{
InitializeComponent();
FormPrompt = Prompt;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title, string Default)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
DefaultValue = Default;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
static public InputBoxResult Show(string Prompt, string Title, string Default, int XPos, int YPos)
{
InitializeComponent();
FormCaption = Title;
FormPrompt = Prompt;
DefaultValue = Default;
XPosition = XPos;
YPosition = YPos;
// Display the form as a modal dialog box.
LoadForm();
frmInputDialog.ShowDialog();
return OutputResponse;
}
#endregion
#region Private Properties
static private string FormCaption
{
set
{
_formCaption = value;
}
} // property FormCaption
static private string FormPrompt
{
set
{
_formPrompt = value;
}
} // property FormPrompt
static private InputBoxResult OutputResponse
{
get
{
return _outputResponse;
}
set
{
_outputResponse = value;
}
} // property InputResponse
static private string DefaultValue
{
set
{
_defaultValue = value;
}
} // property DefaultValue
static private int XPosition
{
set
{
if (value >= 0)
_xPos = value;
}
} // property XPos
static private int YPosition
{
set
{
if (value >= 0)
_yPos = value;
}
} // property YPos
#endregion
internal static object show(string p)
{
throw new NotImplementedException();
}
}
}
خوب حالا به برنامه اصلی برید و فضای نام زیر رو به برنامه اضافه کنید :
using WindowsApplication1;
خوب حالا برای استفاده آماده است یه تیکه کد مثال هم (تیکه کده کامل نیست) میزارم تا نحوه استفاده رو نشون بده :
str[i] = Convert.ToString(InputBox.Show("كاربر گرامي نام داده هاي سال" + (i + 1) + " را وارد كنيد ", "ورود اطلاعات").Text);
امید وارم که این مطلب مفید باشه. فقط خواهشن یه نظر سنجی میزارم توش شرکت کنید خواهشن چون من تو تالار vb.net مطلبی گذاشتم از 70 نفر فقط 5 نفر شرکت کرن شماکه داری مطلب رو میخونی حداقل موقع بیرون رفتن یه نظر بدی بد نیست. با تشکر.:خجالت: