通过 Webview 2 使用 Win Forms 中的按钮保存网站上的更改

问题描述 投票:0回答:1

我正在 Win Forms 中开发一个应用程序工具,我的公司用它来查看 azure dev 中查询中存在的所有工作项。例如,当您按下查询时,您将在 webview2 的帮助下重定向到 azure dev 中的确切工作项。您已经可以在该工具中编写并保存通过按钮在网站上弹出的标签。但是,如果我尝试进行其他更改,例如添加工作项的描述,然后按保存按钮,则不起作用。

我知道您可以直接在网站上保存更改,但我的主管希望如此,因此您只需按工具中现有的保存按钮即可,而不必执行两次该过程。这是保存标签的按钮代码,以防有人好奇

private void button_sign_Click(object sender, EventArgs e)
 {
     if (textBoxTag.Text != "")
     {
         int id = currentworkitemID;
         wis.publish(textBoxTag.Text, id, textchanged);
         textchanged = false;
         changed.Clear();
         refreshGraph();
     }
     else MessageBox.Show("TAG CANNOT BE EMPTY");
 }     

在寻找答案时,我确实感觉到这件事似乎不太可能起作用,但我认为如果您已经能够在网站上保存标签,您也可以保存其他东西。如果有人知道什么,我会很高兴提供帮助。

编辑:发布字段

  public void publish(string tag, int id, bool change)
   {

       foreach (WorkItem wi in CacheItems.Values)
       {
           if (wi.IsDirty || wi.Id == id)
           {
               if (wi.IsValid())
               {
                   wi.Fields["Tags"].Value = wi.Fields["Tags"].Value.ToString() + "; " + tag;
                   try
                   {
                       wi.Save();
                       if (wi.Fields.Contains("Microsoft.VSTS.Common.Triage"))
                       {
                           if (isTriaged(wi.Id) && wi.Fields["Microsoft.VSTS.Common.Triage"].Value.ToString() != "Triaged")
                           {
                               Triaged.Remove(wi.Id);
                               Decided.Add(wi.Id);
                               goesToDecided(wi.Id);
                           }
                           else
                           if ((!isTriaged(wi.Id)) && wi.Fields["Microsoft.VSTS.Common.Triage"].Value.ToString() == "Triaged")
                           {
                               Triaged.Add(wi.Id);
                               Decided.Remove(wi.Id);
                               goesToTriaged(wi.Id);
                           }

                       }
                       Changed.Add(wi.Id);
                   }
                   catch (System.Exception ex)
                   {
                       MessageBox.Show(ex.Message + "\n\nRedo updates in WI" + wi.Id.ToString() + "!", "Save Failed: ");
                       wi.SyncToLatest();
                   }

               }
               else
               {
                   MessageBox.Show("WorkItem: " + wi.Id.ToString() + " not valid ");
               }
           }
       }
c# winforms azure-devops webview2
1个回答
0
投票

从您发布的 C# 代码中,我注意到下面的行。

wis.publish(textBoxTag.Text, id, textchanged);

这一行似乎正在调用自定义方法“

publish
”来更新指定工作项上的标签。

您可以尝试参考该自定义方法的代码,查看该方法使用了哪些API/方法/属性来更新指定工作项上的标签字段。

然后您可以尝试重写自定义方法(或定义新方法)来更新指定工作项上的其他字段。如需更新评论,可以尝试在方法中使用评论相关的API/方法/属性。

© www.soinside.com 2019 - 2024. All rights reserved.