How to get the selected time from datetimepicker in C# - c#

datetimepicker.Value or datetimepicker.Text is always returning the current DateTime, not the selected one. Is there any property that I need to set to get the selected date time.
Below is my code:
private void button1_Click(object sender, EventArgs e)
{
c1.cName = textBox1.Text;
c1.dlv_Time = dateTimePicker1.Value;
string temp = dateTimePicker1.Text;
textBox1.Text = "";
dateTimePicker1.Text = "";
}
In the Form UI, I am changing the time, but in the code Im always receiving the present time.
Thanks in advance

dateTimePicker1.Value.TimeOfDay.ToString()
It will return you the selected time of the date picker control in the string format.

I was editing a different timepicker and reading from a different timepicker.
I have resolved it by changing datetimepicker1 to datetimepicker2.

Related

How to set validation on datetimepicker value using C#

I have two datetimepicker control , datetimepicker1 and datetimepicker2.
i have select the date 24-02-2018 in datetimepicker1, so please tell me how can i set max value for datetimepicker2 which shouldn't be maximum then datetimepicker1 value.
Datetimepicker2 date should always be less than datetimepicker1 value.
What I have tried:
dateTimePicker2.MaxDate = dateTimePicker1.Value;
You have to set the MaxDate every time the Value in dateTimePicker1 changes.
You have to listen to the ValueChanged-event
private void InitializeComponent()
{
// Some code
this.dateTimePicker1.ValueChanged += new System.EventHandler(this.dateTimePicker1_ValueChanged);
// some code
}
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
if (this.dateTimePicker2.Value > this.dateTimePicker1.Value)
{
this.dateTimePicker2.MaxDate = this.dateTimePicker1.Value;
}
}
You should let Visual Studio do the work for you: Select dateTimePicket1 in your form. Select events (the little lightning in the properties-box) search for ValueChanged-event. Doubleclick on the name to add a method which is run on the event. Add you max-date-code there.
Explaination: If you set this.dateTimePicket2.Maxdate = this.dateTimePicker1.Value it'll be a copy of your Value. If the Value of dateTimePicker1 changes later on, the MaxDate will be still the same. You have to set it again.

How to pass value of datetimepicker to another datetimepicker in another form

I have a datetimepicker values in datagridview. (Arrival date and departure date)
Here is screen shoot.
Also, I have an edit form for the values in datagrid view.
How can I pass the values of datetimepicker from datagridview to the second form as datetimepicker value.
Here is my try:
private void arrivaldgv_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
edit edt = new edit();
edt.label12.Text = this.label2.Text;
edt.label13.Text = this.arrivaldgv.CurrentRow.Cells[0].Value.ToString();
edt.textBox1.Text = this.arrivaldgv.CurrentRow.Cells[1].Value.ToString();
edt.textBox2.Text = this.arrivaldgv.CurrentRow.Cells[2].Value.ToString();
edt.textBox3.Text = this.arrivaldgv.CurrentRow.Cells[3].Value.ToString();
/* edt.dateTimePicker1.Value = this.arrivaldgv.CurrentRow.Cells[4].Value; problem here */
edt.ShowDialog();
}
Try the System.Convert.ToDateTime method:
edt.dateTimePicker1.Value = System.Convert.ToDateTime(this.arrivaldgv.CurrentRow.Cells[4].Value);
You can use the DateTime.Parse method:
edt.dateTimePicker1.Value = DateTime.Parse(this.arrivaldgv.CurrentRow.Cells[4].Value);
Most of the .ToX methods use some instance methods internally, such is the case here too, which means that this should work faster than Convert.ToDateTime()

Initial Value of DateTimePicker wrong

I'm probably missing something obvious but I can't see it.....
I have a DateTimePicker control (Winforms) to display just the Time HH:mm:ss of the DateTime. The properties are as follows
Checked = False
Format = Time
ShowCheckbox = False
ShowUpDown = True
Value = 28/10/2014 08:00
ApplicationSettings.PropertyBinding.Value = pickTime1
Where pickTime1 is a user setting where Properties.Settings.Default.pickTime1 = 28/10/2014 08:00
I'm expecting the control to display 08:00:00 when the form first loads but it displays the current time. How do I ensure the user setting is displayed when first initialized?
Subscribe to the Form.Load event and set it in there:
private void Form1_Load(object sender, EventArgs e)
{
dateTimePicker1.Value = Properties.Settings.Default.pickTime1;
}
This will display 8:00:00 AM.
If you want 08:00:00, change Format to Custom, and set the CustomFormat property to "hh:mm:ss".
The DateTimePicker.Value must be changed either by code or by user input, otherwise it will set to the current date and time (i.e. DateTime.Now)

Setting DateTimePicker to Null

I am unable to set the set the Datetimepicker to Null, how can do it. In my project my requirement is to validate the DTPif it is a null, for that I need to set to Null, The code I am using is:
{
dateInsert.Format = DateTimePickerFormat.Custom;
dateInsert.Text = string.Empty;
}
Use the following code:
dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = " ";
Take a variable and set its value when DateTimePicker value changes
e.g.
DateTime? myselectedDate = null;
private void DateTimePicker1_ValueChanged(Object sender, EventArgs e) {
myselectedDate = DateTimePicker1.Value;
}
I had a similar question but I could not find an answer I liked. However, I did come up with a suitable solution. Set the "ShowCheckBox" property for the datetimepicker to true. This will put a check box next to the date in the box. Then add the following code.
if (dateTimePicker1.Checked == false)
myVariable = "";
else
myVariable = dateTimePicker1;
Like "karthik reddy" noted above you need to use the 'CustomFormat', however to write back a null to the SQL database (for example) your code has to inspect the DateTimePicker when it 'Adds' or 'Updates' a record, so you need at least two pieces of code. Where a) 'dtp_X' is the DateTimePicker control, b) '_NewRecord' is the custom object that is being sent back to the SQL server, c) 'TheDateProperty' is the particular date field or property of the Custom object
//Call this when the form Loads
private void AllowTheDatePickersToBeSetToNothing()
{
//This let's you set the DatePicker to nothing
dtp_X.CustomFormat = " ";
dtp_X.Format = DateTimePickerFormat.Custom;
}
// Call this when Uploading or Adding the record (_NewRecord) to an SQL database
private void Set_The_Field_Value_based_on_the_CustomFormat_of_the_DateTimePickers()
{
if (dtp_X.CustomFormat == " ")
{
//the date should be null
_NewRecord.TheDateProperty = SqlDateTime.Null;
}
else
{
_NewRecord.TheDateProperty = SqlDateTime.Parse(Convert.ToString(dtp_X.Value));
}
}
//This button resets the Custom Format, so that the user has a way to reset the DateTimePicker Control
private void btn_Reset_dtp_X_Click(object sender, EventArgs e)
{
dtp_X.Format = DateTimePickerFormat.Custom;
dtp_X.CustomFormat = " ";
}

Button on click save objects to database

So I have an event that is when you click a button I want to send an int, string, datetime and bool to my database.
Right now it will get the input from my webform for the "Company" and the "DayNumber". I want to get the value of my CheckBox01 as the boolean for WeatherRain and the input from the Date. You should be able to choose the date not just take it from "now".
I don't know what would be the best way to get this done, I do have around 100 different fields to get user input from.
protected void btnTryck_Click(object sender, EventArgs e)
{
Dagbok bok = DagbokFactory.CreateNew();
bok.Company = String.Format(TextBox1.Text);
bok.DayNumber = Convert.ToInt32(TextBox19.Text);
bok.WeatherRain = false;
bok.Date = DateTime.Now;
}
In order to get the boolean from your CheckBox01 use its Checked property.
bok.WeatherRain = CheckBox01.Checked;
As for the date problem, I'd suggest using a DateTimePicker control to let the user select the date and get its value with the Value property.
Use Checkbox's checked property for this as shown below:
protected void btnTryck_Click(object sender, EventArgs e)
{
Dagbok bok = DagbokFactory.CreateNew();
bok.Company = String.Format(TextBox1.Text);
bok.DayNumber = Convert.ToInt32(TextBox19.Text);
bok.WeatherRain = CheckBox01.Checked;
bok.Date = DateTime.Now;
}

Categories