我创建了一个带有 4 个控件(一个按钮、2 个下拉列表和一个文本框)的 Telerik Test 应用程序。
我要做的是,在点击“添加项目”按钮时,会显示第一个下拉列表(来自 PopulateProjects() 方法的项目列表)。从该列表中选择项目后,将显示下一个下拉列表,其中包含“来自 PopulateTasks() 方法的项目任务”。在选择一个任务时,文本框控件显示项目和所选任务的文本内容(TextDisplay() 方法)。
我面临的问题是,下拉控件不会等待我选择一个项目,而是默认自动选择列表中的第一个项目。因此,文本框显示项目列表和项目任务中的第一项,即显示“PROJECT abc TASK task one”。我什至无法查看下拉列表中的项目,但我可以在调试时看到这些项目存在。流程从 radProjList.EndUpdate 直接到 selectedIndexChanged。尽管索引没有变化,但该事件被触发事件。下拉列表甚至不显示。
namespace test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnAddProject_Click(object sender, EventArgs e)
{
radProjList.Visible = true;
radTaskList.Visible = false;
PopulateProjects();
radTaskList.Visible = false;
radProjList.Visible = false;
}
public string NoteText
{
get
{
//return txtNote.Text;
return radTextBox.Text;
}
set
{
//txtNote.Text = value;
radTextBox.Text = value;
}
}
void TextDisplay()
{
string projname = radProjList.SelectedText;
string projtask = radTaskList.SelectedText;
this.radTextBox.Text = "PROJECT "+projname + " TASK " + projtask;
radTaskList.Visible = false;
radProjList.Visible = false;
}
void PopulateProjects()
{
radProjList.Visible = true;
radTaskList.Visible = false;
radProjList.Items.Clear();
radProjList.Text = "Select Project";
List<string> ProjectName = new List<string>();
ProjectName.Add("abc");
ProjectName.Add("def");
ProjectName.Add("ghi");
ProjectName.Add("jkl");
ProjectName.Add("mno");
ProjectName.Add("pqr");
radProjList.BeginUpdate();
radProjList.DataSource = ProjectName;
radProjList.DisplayMember = "ProjectName";
radProjList.ValueMember = "ProjectName";
radProjList.AutoCompleteDataSource = ProjectName;
radProjList.DropDownListElement.AutoCompleteSuggest.SuggestMode = Telerik.WinControls.UI.SuggestMode.Contains;
Size popupSize = new Size(400, 300);
radProjList.DropDownListElement.AutoCompleteSuggest.DropDownList.DropDownMinSize = popupSize;
radProjList.DropDownListElement.DropDownMinSize = popupSize;
radProjList.ListElement.Font = new Font("Microsoft Sans Serif", 16);
radProjList.DropDownListElement.AutoCompleteSuggest.DropDownList.Popup.Font = new System.Drawing.Font("Microsoft Sans Serif", 16);
radProjList.EndUpdate();
radProjList.SelectedIndex = -1;
radProjList.Text = "Select Project";
}
void PopulateTasks()
{
List<string> populateTaskList = new List<string>();
radTaskList.Visible = true;
radTaskList.Items.Clear();
populateTaskList.Add("task one");
populateTaskList.Add("task two");
populateTaskList.Add("task three");
populateTaskList.Add("task four");
populateTaskList.Add("task five");
populateTaskList.Add("task six");
radTaskList.Items.Clear();
radTaskList.Text = "Select Tasks";
radTaskList.BeginUpdate();
radTaskList.DataSource = populateTaskList;
radTaskList.DisplayMember = "projectTask";
radTaskList.ValueMember = "projectTask";
radTaskList.AutoCompleteDataSource = populateTaskList;
radTaskList.AutoCompleteMode = AutoCompleteMode.Suggest;
Size popupSize = new Size(400, 300);
radTaskList.DropDownListElement.AutoCompleteSuggest.DropDownList.DropDownMinSize = popupSize;
radTaskList.DropDownListElement.DropDownMinSize = popupSize;
radTaskList.DropDownListElement.AutoCompleteSuggest.DropDownList.ListElement.VisualItemFormatting += new Telerik.WinControls.UI.VisualListItemFormattingEventHandler(ListElement_VisualItemFormatting);
radTaskList.ListElement.Font = new Font("Microsoft Sans Serif", 16);
radProjList.DropDownListElement.AutoCompleteSuggest.DropDownList.Popup.Font = new System.Drawing.Font("Microsoft Sans Serif", 26);
radTaskList.EndUpdate();
radTaskList.SelectedIndex = -1;
radTaskList.Text = "Select Project Type";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void radProjList_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
{
if (radProjList.SelectedIndex >= 0)
{
radTaskList.Select();
PopulateTasks();
}
}
private void radTaskList_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
{
if (radTaskList.SelectedIndex >= 0)
{
radTaskList.CloseDropDown();
TextDisplay();
}
}
Font myFont = new Font("Microsoft Sans Serif", 16);
private void ListElement_VisualItemFormatting(object sender, Telerik.WinControls.UI.VisualItemFormattingEventArgs args)
{
args.VisualItem.Font = myFont;
}
private void radTextBox_TextChanged(object sender, EventArgs e)
{
}
}
}
我还没有将代码添加到 InitializeComponents()。
任何想法或帮助表示赞赏!