获取TextBox以接受用户输入,而不是打开文件夹浏览器

时间:2017-10-02 13:19:34

标签: c# winforms

我目前正在更新一个使用WinForms的C#项目。我想做的一个小改动如下。

项目有一个表单,当前允许用户单击一个按钮,然后打开一个文件夹浏览器窗口,在该窗口中,他们可以选择项目的文件夹以从中检索信息。选中后,所选目录将输入到TextBox中。但是,单击TextBox也会打开“文件夹浏览器”窗口。您当前也无法在TextBox中手动输入文本。

我想要做的是(希望)非常简单:我希望用户能够手动输入目录到TextBox中,让项目接受该文本输入,并且TextBox不能打开文件夹浏览器点击后形成。

要记住的其他一些事项:

  1. 我不熟悉WinForms的所有细节,所以我很可能会错过一些我能做的简单。
  2. 我也正在完全重组项目,所以如果在WinForms中这是不可能的,但在WPF中是可能的,那么在这种情况下这不会成为我的主要障碍。
  3. 这是Button的代码,或者至少是相关部分,作为参考。 txtProjectDir是有问题的TextBox。除了这部分之外,代码中的TextBox没有做太多其他事情。

    private void btnBrowse_Click(object sender, EventArgs e)
    {
        if (chooseProjectFolderDialog.ShowDialog() == DialogResult.OK)
        {
            clbConvertProjects.Items.Clear();
            clbProjects.Items.Clear();
            txtProjectDir.Text = chooseProjectFolderDialog.SelectedPath;
            cur_projDir = txtProjectDir.Text;
    

    更新:我根据多个用户的输入进行了一些更改(顺便说一句,感谢大家)。这就是代码的相关部分现在的样子:

    private void btnBrowse_Click(object sender, EventArgs e)
    {
        if (chooseProjectFolderDialog.ShowDialog() == DialogResult.OK)
        {
            clbConvertProjects.Items.Clear();
            clbProjects.Items.Clear();
            cur_projDir = txtProjectDir.Text;
    

    我还必须将TextBox更改为不是只读的,并从其Event属性中删除对上述方法的引用。现在它可以接受用户输入,并且在单击时不会打开文件夹浏览器。

    唯一的问题是:如果我只直接在TextBox中输入文本,而不是通过浏览器弹出窗口选择文件夹,程序似乎没有正确接受输入(即,没有收集信息来自目录)。显然,我仍然需要让程序接受用户输入,因为它目前没有。

    更新2 :在提出更多建议(再次,谢谢大家)和旧的试错之后,我重新插入了行txtProjectDir.Text = chooseProjectFolderDialog.SelectedPath;,因为从方法中删除它对程序功能产生不良影响。我仍然遇到程序接受用户手动输入到TextBox的问题。

    更新3 :根据@ blaze_125的建议,当用户离开时,我将不得不为TextBox创建一个新事件。谢谢大家的帮助,我很感激!

2 个答案:

答案 0 :(得分:1)

  

但是,单击TextBox也会打开“文件夹浏览器”窗口。

     
    

TextBox的唯一事件是Action - >单击,设置为btnBrowse_Click

         
      

我想要做的是(希望)非常简单:我希望用户能够手动输入目录到TextBox中,让项目接受该文本输入,并且TextBox不能打开文件夹浏览器点击后形成。

    
  

如果您不希望发生该事件(又名action->click),则必须从该文本框中删除文本btnBrowse_Click并将其留空。这将删除您当前链接到文本框点击的event

答案 1 :(得分:0)

将会有一个偶数链接到文本框txtProjectDir以检查此选择文本框,并在属性中选择闪电。

enter image description here

我认为偶数只是点击textbox

如果是这种情况,您可能想删除它。

现在,就如何接受文本框中的内容而言,您只想引用文本,而textbox whitch中的内容将是txtProjectDir.Text

private void btnBrowse_Click(object sender, EventArgs e)
{
    if (chooseProjectFolderDialog.ShowDialog() == DialogResult.OK)
    {
        clbConvertProjects.Items.Clear();
        clbProjects.Items.Clear();
        cur_projDir = txtProjectDir.Text;