나는 두 개의 dateTimePicker를 가지고 있으며 처음에는 날짜를 선택하고 두 번째 것은 날짜보다 첫 번째 날짜를 선택하는 가능성을 자동으로 차단합니다. 다음과 같이 나는 코드를 사용하지만 날짜는 내가 일을 보여주고 싶은 DateTimePicker에서 일부 날짜를 사용하지 않도록 설정하는 방법
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
//TODO SOMETHING (handle errors etc...)
//...
dateTimePicker2.MinDate = dateTimePicker1.Value;
}
를 표시하지 않습니다 만, 선택할 수 없습니다 사용할 수 없습니다? 이럴 수있어? 부디!
내 코드는 다음과 같습니다 : 다음과 같이 Source code
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
namespace formStudent
{
public partial class formStudent : Form
{
List<Student> listStudent = new List<Student>();
class Student
{
public string name { get; set; }
public string gender { get; set; }
public string birthday { get; set; }
public Student(string inName, string inGender, string inBirthday)
{
name = inName;
gender = inGender;
birthday = inBirthday;
}
}
public formStudent()
{
InitializeComponent();
string[,] arrData = new string[10, 3] {
{ "Jane","Female","2016/08/11" },
{ "Peter","Female","2016/08/12" },
{ "John","Female","2016/08/13" },
{ "Ronaldo","Male","2016/08/14" },
{ "Jerry","Female","2016/08/15" },
{ "David","Female","2016/08/16" },
{ "Rooney","Male","2016/08/17" },
{ "Ozil","Male","2016/08/18" },
{ "Torres","Male","2016/08/19" },
{ "Messi","Male","2016/08/20" },
};
//Data row
List<string> dataRow = new List<string>();
//Data Student
Student student = null;
for (int row = 0; row < 10; row++)
{
for (int col = 0; col < 3; col++)
{
dataRow.Add(arrData[row, col]);
}
student = new Student(dataRow[0], dataRow[1], dataRow[2]);
//Get data student
listStudent.Add(student);
dataRow = new List<string>();
}
}
// Filter 1
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
this.dataGridView.Rows.Clear();
var filteredData = listStudent.Where(st => ((dateTimePicker1.Value <= DateTime.Parse(st.birthday).AddDays(1)) && (dateTimePicker2.Value >= DateTime.Parse(st.birthday))));
List<Student> listData = new List<Student>(filteredData);
displayData(listData);
/**
* dateTimePicker2.MinDate = dateTimePicker1.Value;
*/
}
// Filter 2
private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
{
this.dataGridView.Rows.Clear();
var filteredData = listStudent.Where(st => ((dateTimePicker1.Value <= DateTime.Parse(st.birthday).AddDays(1)) && (dateTimePicker2.Value >= DateTime.Parse(st.birthday))));
List<Student> listData = new List<Student>(filteredData);
displayData(listData);
if (dateTimePicker2.Value < dateTimePicker1.Value.Date)
{
dateTimePicker2.Value = dateTimePicker1.Value.Date;
}
}
private void dateTimePicker2_Enter(object sender, EventArgs e)
{
// temporarily set to an earlier date
dateTimePicker1.MinDate = new DateTime(1900, 1, 1);
}
private void dateTimePicker2_Leave(object sender, EventArgs e)
{
dateTimePicker2.MinDate = dateTimePicker1.Value.Date;
}
private void formStudent_Load(object sender, EventArgs e)
{
//Show data
displayData(listStudent);
}
private void displayData(List<Student> listData)
{
//Show data
foreach (Student item in listData)
{
int ii = this.dataGridView.Rows.Add();
this.dataGridView.Rows[ii].Cells[0].Value = item.name;
//Gender
string strGender = string.Empty;
if ("Male".Equals(item.gender))
strGender = "Male";
else
strGender = "Female";
this.dataGridView.Rows[ii].Cells[1].Value = strGender;
this.dataGridView.Rows[ii].Cells[2].Value = item.birthday;
}
}
}
}
표시하는 내용은 의도적으로 설계 한 것입니다. MinDate를 설정 했으므로 이전 날짜가 표시되지 않습니다. –
나는 하루를 보여주고 싶지만 선택할 수없는 장애인인가? 이럴 수있어? – MinhKiyo
"월요일, 화요일, 수요일 등"의 의미입니까? –