天道酬勤,学无止境

如何使FlowLayoutPanel.AutoSize与FlowBreak一起使用(How to get FlowLayoutPanel.AutoSize to work with FlowBreak)

问题

我的FlowLayoutPanel有问题,我不知道如何解决。

我将两个FlowLayoutPanels放置在另一个中; 第二个内部触发器内部有3个按钮。

在此处输入图片说明

FlowLayoutPanel子级的属性为:

FlowDirection = LeftToRight;
AutoSize = true;
AutoSizeMode = GrowAndShrink;
WrapContents = true;

现在,我为每个按钮将FlowBreak属性设置为true,但是我看到的不是我想要的行为,我希望FlowLayoutPanel缩小到按钮的宽度,

在此处输入图片说明

不能将FlowDirection更改为UpToDown

有人知道为什么AutoSize无法正常工作吗?

这是代码。

//
//FlowLayoutPanel1
//
this.FlowLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.FlowLayoutPanel1.Controls.Add(this.FlowLayoutPanel3);
this.FlowLayoutPanel1.Location = new System.Drawing.Point(84, 77);
this.FlowLayoutPanel1.MinimumSize = new System.Drawing.Size(10, 10);
this.FlowLayoutPanel1.Name = "FlowLayoutPanel1";
this.FlowLayoutPanel1.Size = new System.Drawing.Size(308, 265);
this.FlowLayoutPanel1.TabIndex = 0;
//
//FlowLayoutPanel3
//
this.FlowLayoutPanel3.AutoSize = true;
this.FlowLayoutPanel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.FlowLayoutPanel3.Controls.Add(this.Button1);
this.FlowLayoutPanel3.Controls.Add(this.Button2);
this.FlowLayoutPanel3.Controls.Add(this.Button3);
this.FlowLayoutPanel3.Location = new System.Drawing.Point(127, 3);
this.FlowLayoutPanel3.MinimumSize = new System.Drawing.Size(10, 10);
this.FlowLayoutPanel3.Name = "FlowLayoutPanel3";
this.FlowLayoutPanel3.Size = new System.Drawing.Size(162, 87);
this.FlowLayoutPanel3.TabIndex = 1;
//
//Button1
//
this.FlowLayoutPanel3.SetFlowBreak(this.Button1, true);
this.Button1.Location = new System.Drawing.Point(3, 3);
this.Button1.Name = "Button1";
this.Button1.Size = new System.Drawing.Size(75, 23);
this.Button1.TabIndex = 0;
this.Button1.Text = "Button1";
this.Button1.UseVisualStyleBackColor = true;
//
//Button2
//
this.FlowLayoutPanel3.SetFlowBreak(this.Button2, true);
this.Button2.Location = new System.Drawing.Point(3, 32);
this.Button2.Name = "Button2";
this.Button2.Size = new System.Drawing.Size(75, 23);
this.Button2.TabIndex = 1;
this.Button2.Text = "Button2";
this.Button2.UseVisualStyleBackColor = true;
//
//Button3
//
this.Button3.Location = new System.Drawing.Point(3, 61);
this.Button3.Name = "Button3";
this.Button3.Size = new System.Drawing.Size(75, 23);
this.Button3.TabIndex = 2;
this.Button3.Text = "Button3";
this.Button3.UseVisualStyleBackColor = true;
回答1

这是一个错误,已经存在了很长时间。 问题是FlowLayoutPanel的布局引擎会错误地计算出第一行的宽度,包括第二个控件的宽度,即使它被包装到第二行也是如此。

解决方法很愚蠢但有效,请在第一个控件后添加一个宽度为0的虚拟面板。 如果与设计师一起执行此操作,请先将其放下并将其拖动到第一个控件右侧的正确位置。 然后在“属性”窗口中将其“边距”设置为(0,0,0,0),将“大小”设置为(0,0)。

回答2

我不认为FlowLayoutPanel旨在执行您要尝试执行的操作。 TableLayoutPanel可能更适合。 添加具有单个列的TableLayoutPanel,然后将每个按钮添加到一行。

编辑:我发现了一个黑变种工作。 在第一个按钮之后,创建一个大小为0,0且边距为0,0的面板。 确保将FlowBreak设置为false。

在此处输入图片说明

编辑:您只需要在第一个按钮之后创建一个面板,而无需为每个面板创建一个面板。

回答3

不是解决方案,而是解决方法。 看来您正在尝试通过使用FlowLayoutPanel流中断来模拟TableLayoutPanel的行为。 您是否尝试过使用TableLayoutPanel ? 根据评论中的屏幕快照,它可以完美满足您的需求。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How to get FlowLayoutPanel.AutoSize to work with FlowBreak
    I have a problem with a FlowLayoutPanel and I don't know how to solve it. I'm placing two FlowLayoutPanels inside another; the second inner flp has 3 buttons inside. The properties from FlowLayoutPanel child are: FlowDirection = LeftToRight; AutoSize = true; AutoSizeMode = GrowAndShrink; WrapContents = true; Now I set for each button the FlowBreak property to true, however the behavior I see is not the one I want, I want the FlowLayoutPanel to shrink to the width of the buttons, Changing FlowDirection to UpToDown is not an option. Anyone know why the AutoSize is not working? this is the code.
  • 如何在FlowLayout面板中滚动而不在Windows窗体中显示滚动条(How to scroll in flowlayout panel without showing scrollbar in windows form)
    问题 我正在WinForms中的触摸屏POS上工作。 我有一个flowlayoutpanel并动态添加按钮,但是我不想显示滚动条。 我改用2个按钮滚动,所以请帮助我如何滚动而不显示滚动条 回答1 采取两个按钮btnLeft和btnRight并尝试以下代码: private void btnLeft_Click(object sender, EventArgs e) { if (flowPanelItemCategory.Location.X <= xpos) { xmin = flowPanelItemCategory.HorizontalScroll.Minimum; if (flowPanelItemCategory.Location.X >= xmin) { xpos -= 100; flowPanelItemCategory.Location = new Point(xpos, 0); } } } private void btnRight_Click(object sender, EventArgs e) { if (flowPanelItemCategory.Location.X <= xpos) { xmax = flowPanelItemCategory.HorizontalScroll.Maximum; if (flowPanelItemCategory
  • 如何在类范围内使回调与“ this”一起使用(How to get callback to work with “this” in class scope [duplicate])
    问题 这个问题已经在这里有了答案: 回调此上下文[重复] (2个答案) 8年前关闭。 我对以下代码打印“ this.text”有疑问。 我需要具有包装器功能才能使其正常工作。 这太麻烦了。 是否有一种更简单的方法(无需附加包装器)使其工作? function Class1() { this.text = "test"; } Class1.prototype.show = function() { console.log(this); console.log(this.text); } var testClass = new Class1(); function funWithCallBack(cb) { cb(); } // it will show "undefined" because "this" scope changes to window funWithCallBack(testClass.show); function wrapper() { testClass.show(); } // this one will work but troublesome funWithCallBack(wrapper) 回答1 您可以使用如下匿名函数: // it will show "undefined" because "this" scope changes to
  • 如何使Azure Active Directory B2C与Bot Framework一起使用?(how to get Azure Active Directory B2C working with Bot Framework?)
    问题 到目前为止,我还无法在Bot框架上使用它。 我花了一整天的时间,但只能设法获得与AD B2C一起使用的.net api示例(https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet)。 我不确定它在哪里获取要传递给BotUserData的承载令牌... 我已经尝试遵循https://azure.microsoft.com/zh-CN/blog/bot-framework-made-better-with-azure/ 但实际上解决方案无法成功构建,我只能从那里获取代码并进入我的bot框架示例模板...。但是,当它要求我通过MS登录时,我却无法继续,似乎该博客似乎没有使用AD B2C策略。 那么如何将AD B2C与Bot Framework集成在一起? 是否可以从Bot框架调用/ Account / SignIn URL来验证用户身份? 之后,您将如何捕获令牌并将其传递给BotUserData? 回答1 您可能想看看Facebook Auth示例,以了解Auth场景的潜在流程。 对于Azure AD,您需要执行类似的流程。 假设您的用户向您的机器人发送了“登录”消息。 该漫游器应使用身份验证URL进行响应,并要求用户使用该URL登录该服务。
  • 如何使自动工具与Intel编译器一起编译?(How do I get autotools to compile with the Intel compiler?)
    问题 我希望我的代码可以根据配置参数使用Intel编译器或gcc / g ++进行编译。 这可能吗? 我需要在我的configure.ac和Makefile.am文件中放入什么来实现此目的? 回答1 如果要在编译时使用gcc以外的其他编译器,请将“ CC = / path / to / compiler”作为参数进行配置。 (也就是说,运行./configure CC = / path。不要使用CC = / path ./configure的形式。)如果希望默认编译器不是gcc,则可以输入 CC=${CC-/path/to/default/compiler} 在调用AC_PROG_CC之前在configure.ac中。 回答2 我会这样做: AC_PROG_CC([icc gcc]) 这将以指定的顺序查找编译器,除非被./configure的参数覆盖。 $ ./confgure CC=gcc 回答3 当然是的。 您可以在configure.ac中配置默认​​编译器,如果用户要使用其他编译器,则他(或她)可以将其传递给./configure脚本。 您将在这里找到有关它的更多信息:如何使用自动工具。 您可能会感兴趣的部分位于页面中间: #if a compiler is not specified by the user use intel compilers AC_PATH_PROG
  • 如何使mysqli与SQL语句中的DELIMITER一起使用?(How to get mysqli working with DELIMITERs in SQL statements?)
    问题 我正在使用mysqli,现在尝试从SQL代码片段(由MySQL Workbench生成)获取视图到数据库中。 $query = <<<QUERY DROP VIEW IF EXISTS `myview` ; SHOW WARNINGS; DROP TABLE IF EXISTS `myview`; SHOW WARNINGS; DELIMITER $$ CREATE OR REPLACE VIEW `myview` AS ...view definition... $$ DELIMITER ; ; SHOW WARNINGS; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; QUERY; $result = mysqli_multi_query($dbConnection, $query); 这不起作用。 没有错误,该语句似乎只是被忽略了。 仅当删除定界符定义(行DELIMITER $$ , $$和DELIMITER ; )时,它才有效。 为什么不起作用? 如何/应该在传递给mysqli函数和方法的SQL语句中使用定界符? 谢谢 回答1 这是帮助我理解这一点的来源... http://zend
  • 我如何使bootstrap-datepicker与Bootstrap 3一起使用?(How do I get bootstrap-datepicker to work with Bootstrap 3?)
    问题 我使用eternicode(Andrew Rowls)维护的bootstrap-datepicker版本。 在Bootstrap 2上它可以工作,但是现在在Bootstrap 3库上不起作用。 我如何使bootstrap-datepicker与Bootstrap 3 ? 注意:存储库已从eternicode移至组织帐户(uxsolutions)。 回答1 我还使用了Stefan Petre的http://www.eyecon.ro/bootstrap-datepicker,它在未经修改的情况下无法与Bootstrap 3一起使用。 请注意,http://eternicode.github.io/bootstrap-datepicker/是Stefan Petre的代码的分支。 您必须更改标记(示例标记将不起作用),才能在Bootstrap 3中使用新的CSS和表单网格布局。此外,您还必须在实际的bootstrap-datepicker实现中修改一些CSS和JavaScript。 这是我的解决方案: <div class="form-group row"> <div class="col-xs-8"> <label class="control-label">My Label</label> <div class="input-group date" id="dp3" data
  • 如何使StructureMap与AngularJs / MVC5和WebApi2 Web项目一起使用(How do I get StructureMap working with an AngularJs / MVC5 and WebApi2 web project)
    问题 因此,我有一个带有常规Controllers的AngularJs / MVC项目,并决定将其移至SPA应用程序并添加WebApi2以将数据传递回我的UI,而不是使用MVC。 在我的Global.asax中,我的MVC项目具有以下内容: DependencyResolver.SetResolver(new StructureMapDependencyResolver(container)); 我的WebApiController有一个带有IRepository的构造函数,用于与数据库对话并获取一些实体。 当我的AngularJS Web应用程序调用控制器时,断点从未命中,并且我收到的服务器500错误返回的信息很少。 Public class MyController : ApiController { public MyController (IThingRepository thingrepository) { .... } } 我开始看到如下错误: “ ExceptionType”:“ System.ArgumentException”,“ Message”:“类型'MyProject.Web.Controllers.MyController'没有默认的构造函数” 我不想添加默认构造函数。 为什么会得到这个,如何解决? 回答1
  • 如何使ActiveAdmin与强参数一起使用?(How to get ActiveAdmin to work with Strong Parameters?)
    问题 更新:在ActiveAdmin中已经存在针对此问题的解决方案之前,已询问此问题。 如约瑟夫所说,ActiveAdmin文档现在包含此信息,但此处的答案是为使用较旧版本的ActiveAdmin的用户提供的。 在Rails 3.2.8中将strong_parameters 0.1.4与ActiveAdmin 0.5.0一起使用时,如果所使用的模型通过以下方式使用StrongParameters: include ::ActiveModel::ForbiddenAttributesProtection 如果您尝试创建/编辑记录,则会在日志中收到以下错误: ActiveModel::ForbiddenAttributes (ActiveModel::ForbiddenAttributes) 回答1 现在,文档清楚地说明了如何在Rails 4中设置强参数。请参阅: https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters 回答2 更新到最新的Inherited_resources gem,并在您的控制器块中执行以下操作: ActiveAdmin.register Blog do #... controller do
  • 如何使materializecss复选框与@ Html.CheckBoxFor一起使用?(How to get materializecss checkbox to work with @Html.CheckBoxFor?)
    问题 所以我在尝试使用@ Html.CheckBoxFor实现materializecss复选框时遇到问题。 如果我准确输入: <input type="checkbox" id="test5" /> <label for="test5">Red</label> 有用。 但是,如果我尝试这样做: @Html.LabelFor(m => m.RememberMe, new { @class = "login-label" }) @Html.CheckBoxFor(m => m.RememberMe, new { @type = "checkbox" }) 复选框将在页面的左侧消失(复选框的样式将其左侧设置为-99999)。 还有什么其他方法可以实现CheckBoxFor,从而使物化合作? 回答1 我遇到了同样的问题,ChecBoxFor和LabelFor的顺序就像peter.edwards建议的那样。 对我来说,问题是由@ Html.CheckBoxFor生成的隐藏元素引起的: <input checked="checked" class="check-box" data-val="true" id="IsActive" name="IsActive" type="checkbox" value="true"> <input name="IsActive" type="hidden"
  • 如何使jQuery的Uploadify插件与ASP.NET MVC一起使用?(How do I get jQuery's Uploadify plugin to work with ASP.NET MVC?)
    问题 我正在尝试使jQuery插件Uploadify与ASP.NET MVC一起使用。 我用以下JavaScript代码段很好地显示了该插件: <script type="text/javascript"> $(document).ready(function() { $('#fileUpload').fileUpload({ 'uploader': '/Content/Flash/uploader.swf', 'script': '/Placement/Upload', 'folder': '/uploads', 'multi': 'true', 'buttonText': 'Browse', 'displayData': 'speed', 'simUploadLimit': 2, 'cancelImg': '/Content/Images/cancel.png' }); }); </script> 似乎一切都很好。 如果您注意到,“脚本”属性将设置为我的/ Placement / Upload,这是我的展示位置控制器和我的上载操作。 主要问题是,我很难执行此操作以接收文件。 我已在该操作上设置了一个断点,当我选择要上传的文件时,该文件未得到执行。 我试过根据本文更改方法签名: public string Upload(HttpPostedFileBase FileData) {
  • 如何使[DebuggerDisplay]尊重继承的类或至少与集合一起使用?(How to make [DebuggerDisplay] respect inherited classes or at least work with collections?)
    问题 我有一个继承自List<MagicBean> 。 除了一个方面,它在所有方面都工作正常且符合预期:当我添加[DebuggerDisplay]属性时。 即使查看List的状态为[DebuggerDisplay("Count = {Count}")] ,如果我尽可能多地复制并粘贴到我的列表中,我将无法直接查看我拥有的所有MagicBean,而无需钻研base-> private成员,同时进行调试。 如何获得两全其美? IE:“值”列中的自定义值,Visual Studio不会向我隐藏我的魔豆吗? 回答1 您可以使用DebuggerTypeProxy属性获得所需的效果。 您需要创建一个类来对继承列表进行调试“可视化”: internal sealed class MagicBeanListDebugView { private List<MagicBean> list; public MagicBeanListDebugView(List<MagicBean> list) { this.list = list; } [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)] public MagicBean[] Items{get {return list.ToArray();}} } 然后,您可以声明该类供调试器用于显示您的类
  • 如何使嵌入的hasMany关系与余烬数据一起使用(How to make embedded hasMany relationships work with ember data)
    问题 我无法embedded hasMany以正确处理余烬数据。 我有这样的东西 App.Post = DS.Model.extend({ comments: DS.hasMany('App.Comment') }); App.Comment = DS.Model.extend({ post: DS.hasMany('App.Post'), name: attr('string') }); 我的API为GET /post返回以下内容: [ { id: 1 comments: [{name: 'test'}, {name: 'test2'}] }, ... ] 我需要用POST /post发送: [ { comments: [{name: 'test'}, {name: 'test2'}] }, ... ] 我想使用Ember模型,并让他们提出适当的要求: var post = App.store.createRecord(App.Post, hash_post_without_comments); post.get('comments').createRecord(hash_comment); App.store.commit(); // This should call the POST api 和 var posts = App.store.find(App.Post); //
  • 如何使file_get_contents()与HTTPS一起使用?(How to get file_get_contents() to work with HTTPS?)
    问题 我正在设置信用卡处理程序,需要对CURL使用替代方法。 当我使用测试服务器(未调用SSL URL)时,以下代码可以正常工作,但是现在当我在使用HTTPS的工作服务器上对其进行测试时,它失败,并显示错误消息“无法打开流”。 function send($packet, $url) { $ctx = stream_context_create( array( 'http'=>array( 'header'=>"Content-type: application/x-www-form-urlencoded", 'method'=>'POST', 'content'=>$packet ) ) ); return file_get_contents($url, 0, $ctx); } 回答1 请尝试以下脚本,以查看您的php脚本是否有https包装器。 $w = stream_get_wrappers(); echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n"; echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n"; echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "
  • 如何使UI_USER_INTERFACE_IDIOM()与iPhone OS SDK <3.2一起使用(How does one get UI_USER_INTERFACE_IDIOM() to work with iPhone OS SDK < 3.2)
    问题 Apple建议使用以下代码来检测是在iPad还是iPhone / iPod Touch上运行: if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // The device is an iPad running iPhone 3.2 or later. // [for example, load appropriate iPad nib file] } else { // The device is an iPhone or iPod touch. // [for example, load appropriate iPhone nib file] } 问题在于,在3.2之前的SDK中未定义UI_USER_INTERFACE_IDIOM()和UIUserInterfaceIdiomPad。 这似乎完全破坏了这种功能的目的。 它们只能编译并在iPhone OS 3.2上运行(iPhone OS 3.2只能在iPad上运行)。 因此,如果可以使用UI_USER_INTERFACE_IDIOM(),结果将始终是表示iPad。 如果包含此代码并以OS 3.1.3(最新的iPhone / iPod Touch操作系统)为目标以测试与iPhone绑定的通用应用程序代码,则将出现编译器错误,因为未在3.1
  • 如何使我的“点击”功能与iOS一起使用(How to make my 'click' function work with iOS)
    问题 我有一组Div用作按钮。 这些按钮具有一个简单的jquery click()函数,可在除iOS之外的所有浏览器中使用。 例如: <div class="button">click me</div> 和 $('.button').click(function(){ alert('hi'); }); 我不确定为什么这在iOS上不起作用-显然在iOS中没有“单击”。 不幸的是,我没有iphone设备来进行自我测试,但是我收到了很多想要单击内容的客户的抱怨,但没有任何反应。 使它起作用的关键是什么? 回答1 单击“:”表示在同一元素上发生mousedown和mouseup事件,或者键盘激活了元素。 从Jquery Bug出发,有解决方法,只需将"cursor: pointer"添加到元素的CSS,click事件将按预期工作。 您甚至可以看到此Jquery单击Ios寻求帮助 回答2 实际上,接受的答案对我不起作用。 我尝试使用“ cursor:pointer”,onclick =“”,甚至将元素转换为锚标记。 我所做的就是绑定单击事件中的touchstart事件。 为了使其在所有平台上都能正常工作,我不得不像这样丑陋的UA欺骗: var ua = navigator.userAgent, event = (ua.match(/iPad/i) || ua.match(/iPhone/))
  • 如何使SVG与IE一起使用?(How to make SVG work with IE?)
    问题 有谁知道一个全面的库来使SVG与IE兼容(尤其是7和8)? 我想要一些Javascript,该Javascript可以包含在我的网页中,并且可以用类似于excanvas对Canvas所做的方式将所有SVG静默转换为VML。 回答1 Raphaël-JavaScript库可以为您提供帮助。 Raphaël使用SVG W3C Recommendation和VML作为创建图形的基础,并支持Firefox 3.0 +,Safari 3.0 +,Opera 9.5+和Internet Explorer 6.0+。 编辑: 还有两个使用vml在IE中呈现svg的js库: 充足的SDK(应该可以轻松集成现有的svg文件) Dojo工具包中的DojoX GFX 回答2 Google的SVG网站可以做到这一点。 根据项目网站: SVG Web是一个JavaScript库,可在许多浏览器(包括Internet Explorer,Firefox和Safari)上提供SVG支持。 使用该库以及本机SVG支持,您可以立即将约95%的现有已安装Web库作为目标。 尽管它被描述为JavaScript库,但它也需要Flash 9+。 通常这不是问题,但是如果您在公司环境中使用旧的Flash或工作站上没有Flash,那么它将无法正常工作。 同样,它仍然在Alpha中,这可能是个问题,具体取决于您的项目是什么。
  • 如何使lodash与Angular JS一起使用?(How to make lodash work with Angular JS?)
    问题 我正在尝试使用lodash以这种方式在ng-repeat指令中使用它: <div ng-controller="GridController" ng-repeat="n in _.range(5)"> <div>Hello {{n}}</div> </div> 作为GridController : IndexModule.controller('GridController', function () { this._ = _ }) 但是,它不起作用,因此,没有任何重复。 如果我将指令更改为ng-repeat="i in [1,2,3,4,5]"则它将起作用。 lodash已通过angular之前的<header> <script>包含在内。 我该如何运作? 回答1 我更喜欢在全局范围内引入“ _”并在测试中引入“ _”,请参见我对这个问题的回答 var myapp = angular.module('myApp', []) // allow DI for use in controllers, unit tests .constant('_', window._) // use in views, ng-repeat="x in _.range(3)" .run(function ($rootScope) { $rootScope._ = window._; }); 回答2
  • 如何使FxCop自定义词典起作用?(How to get the FxCop custom dictionary to work?)
    问题 如何使FxCop自定义词典正常工作? 我尝试将要识别的单词添加到文件“ CustomDictionary.xml”中,该文件与FxCop项目文件保存在同一文件夹中。 这似乎不起作用,因为即使重新加载并重新运行FxCop之后,我仍然会收到“标识符应正确拼写”的FxCop消息。 使用1.36版。 回答1 如果在Visual Studio中使用它... 来自Visual Studio代码分析团队博客 要将自定义词典添加到C#和Visual Basic项目很简单: 在解决方案资源管理器中,右键单击该项目,然后选择添加->新建项... 在“模板”下,选择“ XML文件”,输入字典的名称,例如CodeAnalysisDictionary.xml,然后单击“添加”。 在解决方案资源管理器中,右键单击XML文件,然后选择“属性”。 在“属性”工具窗口的“生成操作”下,选择“ CodeAnalysisDictionary”。 在解决方案资源管理器中,双击新创建的词典以将其打开在XML编辑器中,粘贴以下内容,将“ productname”和“ companyname”替换为您团队的等效名称: <Dictionary> <Words> <Recognized> <Word>"productname"</Word> <Word>"companyname"</Word> </Recognized> <
  • 如何使HttpClient随请求一起传递凭据?(How to get HttpClient to pass credentials along with the request?)
    问题 我有一个与Windows服务对话的Web应用程序(托管在IIS中)。 Windows服务使用的是ASP.Net MVC Web API(自托管),因此可以使用JSON与HTTP进行通信。 Web应用程序被配置为进行模拟,其想法是向Web应用程序发出请求的用户应该是Web应用程序用于向服务发出请求的用户。 结构如下: (以红色突出显示的用户是以下示例中所指的用户。) 该Web应用程序使用HttpClient向Windows服务发出请求: var httpClient = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }); httpClient.GetStringAsync("http://localhost/some/endpoint/"); 这会向Windows服务发出请求,但不会正确传递凭据(该服务将用户报告为IIS APPPOOL\ASP.NET 4.0 )。 这不是我想要发生的事情。 如果我将上面的代码更改为改为使用WebClient,则会正确传递用户的凭据: WebClient c = new WebClient { UseDefaultCredentials = true }; c.DownloadStringAsync(new Uri("http://localhost