如何在组合框中添加项目?
Posted
技术标签:
【中文标题】如何在组合框中添加项目?【英文标题】:how do i add items in combobox? 【发布时间】:2013-09-24 11:17:00 【问题描述】:我遇到了问题。
我已经尝试过这段代码:
comboBox1.Items.Add("--Dates--");
comboBox1.SelectedIndex = 0;
但是当我运行程序时它无法在组合框中添加项目。
代码如下:
public partial class Trans : Form
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\db1.accdb";
private const int CP_NOCLOSE_BUTTON = 0x200;
private Choices _choice;
private DataSet _ds = new DataSet();
private List<DateTime> _startDate = new List<DateTime>();
private List<DateTime> _endDate = new List<DateTime>();
int startDate;
int endDate;
public Trans()
InitializeComponent();
public Trans(Choices _choice)
: this()
this._choice = _choice;
private void Trans_Load(object sender, EventArgs e)
startDate = (int)DateTime.Today.AddYears(5).Subtract(DateTime.Today).TotalDays + 1;
endDate = (int)DateTime.Today.AddYears(5).Subtract(DateTime.Today).TotalDays + 1;
for (int i = 0; i < startDate; i++)
_startDate.Add(DateTime.Today.AddDays(i));
for (int i = 0; i < endDate; i++)
_endDate.Add(DateTime.Today.AddDays(i));
StartDateCollection(sender, e);
this.dataGridView1.Columns["ID"].Visible = false;
this.dataGridView1.Sort(this.dataGridView1.Columns["Times"], System.ComponentModel.ListSortDirection.Ascending);
this.label3.Text = "Welcome, " + UserInformation.CurrentLoggedInUser + " " + " " + "-" + " " + " " + UserInformation.CurrentLoggedInUserType;
this.label3.ForeColor = System.Drawing.Color.White;
dataGridView1.RowPostPaint += new DataGridViewRowPostPaintEventHandler(this.SetRowNumber);
dataGridView1.ClearSelection();
private void ViewDatabase(object sender, EventArgs e)
using (OleDbConnection conn = new OleDbConnection(connectionString))
string query = "SELECT [ProductCode], [Quantity], [Description], [SubTotal], [Total], [IssuedBy], [To], [Dates], [Times] FROM [TransRecord]";
conn.Open();
using (OleDbDataAdapter _adapter = new OleDbDataAdapter(query, conn))
_ds.Clear();
_adapter.Fill(_ds, "TransRecord");
dataGridView1.DataSource = null;
dataGridView1.Refresh();
dataGridView1.DataSource = _ds.Tables[0];
conn.Close();
private void SetRowNumber(object sender, DataGridViewRowPostPaintEventArgs e)
var grid = sender as DataGridView;
var rowIdx = (e.RowIndex + 1).ToString();
var centerFormat = new StringFormat()
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
;
var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
private void StartDateCollection(object sender, EventArgs e)
comboBox1.DataSource = _startDate;
comboBox1.FormatString = "M/dd/yyyy";
comboBox1.FormattingEnabled = true;
private void StartDateCollection_SelectedIndexChanged(object sender, EventArgs e)
DateTime comboBox1_SelectedDate = Convert.ToDateTime(comboBox1.SelectedValue);
List<DateTime> tempDate = _endDate.Where(d => d > comboBox1_SelectedDate).ToList<DateTime>();
comboBox2.DataSource = tempDate;
comboBox2.FormatString = "M/dd/yyyy";
comboBox2.FormattingEnabled = true;
(....其他代码)
我把 Items.Add 放在 StartDateCollection 函数中,但没有出现我添加的字符串,只出现日期。
我该如何解决?
谢谢。
或者,我想拥有从第一天开始的交易记录。
例子:我有今天24 September 2013
的交易记录,但是当我明天打开程序时,我无法打开24 September 2013
的交易记录,因为日期24 September 2013
已经消失了。我希望组合框项目从交易记录的第一个日期开始显示。
感谢您的回答 非常感谢!
截图如下:
从上图可以看出,ComboBox 中的开始日期是Date
,我想在显示Date
之前创建一个---Dates---
。所以它会是这样的(在组合框中)
- -日期 - -
2013 年 9 月 24 日
2013 年 9 月 25 日
……
(以此类推)
【问题讨论】:
在这个comboBox2.FormattingEnabled = true之后写comboBox2.DataBind(); 没有.DataBind() 先生 你使用的是asp.net还是windows窗体? windows 窗体,我已经标记了 winForms 我试过你的组合框绑定代码,它工作正常检查我帖子中的示例代码 【参考方案1】:如果您需要组合框中的第一项,则应该是一些通用文本,例如“选择日期”或其他内容,这样就可以实现了。
private void button4_Click(object sender, EventArgs e)
List<DateTime> lstDate = new List<DateTime>();
DateTime dt = DateTime.Now;
for (int i = 0; i < 20; i++)
lstDate.Add(dt);
List<string> lstDataSource = lstDate.Select(a => a.ToString("M/dd/yyyy")).ToList();
lstDataSource.Insert(0, "---Select Date---");
comboBox1.DataSource = lstDataSource;
comboBox1.FormattingEnabled = true;
【讨论】:
【参考方案2】: private void button4_Click(object sender, EventArgs e)
List<DateTime> lstDate = new List<DateTime>();
DateTime dt = DateTime.Now;
for (int i = 0; i < 40; i++)
lstDate.Add(dt);
comboBox1.DataSource = lstDate;
comboBox1.FormatString = "M/dd/yyyy";
comboBox1.FormattingEnabled = true;
在组合框中添加日期
【讨论】:
是的,先生,我已经这样做了,但这不是我想要的,请再次参考问题,我已经包含屏幕截图。谢谢 你的问题还不清楚,你说“所以它会是这样的(在组合框中)---日期--- 9/24/2013 9/25/2013 .... ..(等等)”,因此它显示在您的“开始日期”组合中,如屏幕截图所示 我的意思是,当我运行程序时。 ComboBox 将显示如下:第一项:---Dates---,第二项和第三项,依此类推:(显示日期) 所以您需要组合框的第一项应该是文本,例如“---Dates---”,然后是所有日期......我正确吗? 没有问题 .. 总是专注于主要目标而不是整个事情:)以上是关于如何在组合框中添加项目?的主要内容,如果未能解决你的问题,请参考以下文章