无法格式化 ToolStripComboBox 控件中的项目
Unable to format items in a ToolStripComboBox control
有没有人知道如何格式化 ToolStripComboBox
中的项目?
此控件没有 FormatString
属性,但它有一个 ComboBox
属性,它提供对基础 ComboBox
控件的完全访问。
但是设置FormatString
完全没有效果。
tsComboBox.ComboBox.FormatString = "MMMM, yyyy";
我无法控制项目的格式。有谁知道如何解决这个问题?
你可以做典型的“绑定两个 属性 的事情,将一个属性设置为格式化显示项,另一个设置为值”路由:
var dt = new DataTable();
dt.Columns.Add("Disp");
dt.Columns.Add("Val", typeof(int));
dt.Rows.Add("Hello", 1);
dt.Rows.Add("Goodbye", 2);
toolStripComboBox1.ComboBox.DisplayMember = "Disp";
toolStripComboBox1.ComboBox.ValueMember = "Val";
toolStripComboBox1.ComboBox.DataSource = dt;
然后用SelectedValue拉取:
MessageBox.Show($"value is {toolStripComboBox1.ComboBox.SelectedValue} an {toolStripComboBox1.ComboBox.SelectedValue.GetType()}");
不必是数据表; DataSource
可以是例如一个List<KeyValuePair>
,一个List<YourClass>
等
如果您正在寻找更精简的内容,您可以提供覆盖 ToString 的内容:
toolStripComboBox1.ComboBox.DataSource =
Enumerable.Range(1, 12)
.Select(i => new MyX { X = DateTime.Now.AddDays(i * 30) })
.ToList();
class MyX
{
public DateTime X { get; set; }
public override string ToString()
=> X.ToString("MMMM, yyyy");
}
有没有人知道如何格式化 ToolStripComboBox
中的项目?
此控件没有 FormatString
属性,但它有一个 ComboBox
属性,它提供对基础 ComboBox
控件的完全访问。
但是设置FormatString
完全没有效果。
tsComboBox.ComboBox.FormatString = "MMMM, yyyy";
我无法控制项目的格式。有谁知道如何解决这个问题?
你可以做典型的“绑定两个 属性 的事情,将一个属性设置为格式化显示项,另一个设置为值”路由:
var dt = new DataTable();
dt.Columns.Add("Disp");
dt.Columns.Add("Val", typeof(int));
dt.Rows.Add("Hello", 1);
dt.Rows.Add("Goodbye", 2);
toolStripComboBox1.ComboBox.DisplayMember = "Disp";
toolStripComboBox1.ComboBox.ValueMember = "Val";
toolStripComboBox1.ComboBox.DataSource = dt;
然后用SelectedValue拉取:
MessageBox.Show($"value is {toolStripComboBox1.ComboBox.SelectedValue} an {toolStripComboBox1.ComboBox.SelectedValue.GetType()}");
不必是数据表; DataSource
可以是例如一个List<KeyValuePair>
,一个List<YourClass>
等
如果您正在寻找更精简的内容,您可以提供覆盖 ToString 的内容:
toolStripComboBox1.ComboBox.DataSource =
Enumerable.Range(1, 12)
.Select(i => new MyX { X = DateTime.Now.AddDays(i * 30) })
.ToList();
class MyX
{
public DateTime X { get; set; }
public override string ToString()
=> X.ToString("MMMM, yyyy");
}