我有一些关联到某些列表的lookupedits,用户可以选择值然后保存在数据库中。我使用EditValueChanged事件来处理值。到目前为止一切都很好!
现在我需要从数据库中获取值并将它们分配给lookupedits。我没有将BindingSource用于整个对象,因为lookupedits绑定到独立列表。 正如我想的那样,从文档中读取,SelectedText是我需要的,但当我分配我想要的字符串时,它只是不起作用并设置一个空字符串。 DateEdit控件的相同行为,我正在分配一个DateTime值,似乎有这个值,但没有显示它。我可以设置EditValue属性,但我再没有在LookUpEdit中显示任何内容。
如何强制LookUpEdit向我显示我想要的值,基本上转到我设置的值的行并在编辑器中显示文本,或者设置SelectedText并将其与列表匹配并显示它! / p>
我想这应该更容易......任何帮助表示赞赏!
示例:
myLookUpEdit.SelectedText = "George" // The LookUpEdit is Binded to a List<Names> and has the name George.
谢谢
答案 0 :(得分:1)
每当我设置LookupEdit的值时,我都使用EditValue。
您需要确保将LookupEdit的ValueMember属性设置为您希望在EditValue中显示的任何内容。 DisplayMember将关闭LoodupEdit时显示的内容。您可以将字符串传递给对象中所需属性的名称。
据我所知,设置SelectedText值与输入控件的效果相同。
public partial class Form1 : Form
{
List<Name> MyNames = new List<Name>();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MyNames.Add(new Name("John", "Smith"));
MyNames.Add(new Name("John", "Doe"));
MyNames.Add(new Name("Jane", "Doe"));
MyNames.Add(new Name("Jane", "Smith"));
lookUpEdit1.Properties.DataSource = MyNames;
lookUpEdit1.Properties.DisplayMember = "FirstName";
lookUpEdit1.Properties.ValueMember = "FirstName";
}
private void lookUpEdit1_EditValueChanged(object sender, EventArgs e)
{
string mystring = lookUpEdit1.EditValue.ToString();
lookUpEdit1.EditValue = mystring;
}
}
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Name(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}