小编Jan*_*nen的帖子

C#:锚定面板不会正确调整大小

关于在用户控件中自动调整面板大小,我遇到了一个奇怪的问题.该面板固定在用户控件的所有4个侧面.但锚定并不总是如此:

如果通过调整窗体大小来调整用户控件的大小,则右侧和底部锚点不起作用.但是如果通过使用表单中的拆分器来调整控件的大小,则它可以正常工作.所有其他控件也受到调整大小正常工作的影响,只有这个面板不会这样做.

我看不出通过分割器和表单调整大小之间的区别.

仅在通过移动拆分器完成大小调整时,才能在UserControl的OnResize中手动设置大小.如果通过调整窗体大小来调整大小,则面板的高度和宽度将不会更改为新值.

编辑:更清楚:用户控件添加到TabPage并设置为Dock = DockType.Fill.

编辑2:使其更复杂:这是使用控件的层次结构:表单包含一个带有2个控件(A和B)的拆分器.(B)包含带有splitContainer的用户控件(C).(C)中的split container-> panel1包含tabcontrol(D).此tabcontrol(D)包含用户控件(E)(在标签页中).该用户控件(E)具有拆分容器(F),其中放置了具有tabControl(G)的另一个用户控件.此tabcontrol(G)具有tabpages,并且在此页面中是所描述的用户控件(H).

如果我将控件(H)直接放在拆分容器(C)中的面板上,一切正常.由于添加到splitcontainer或tabpage的所有控件都设置为docktype = fill,因此我无法理解为什么最后一个控件存在此问题.

Windows窗体框架中是否存在限制子控件数量的限制?

编辑:我上传了一个TestApplication,您可以使用它重现此问题. http://rapidshare.de/files/49092516/TestApplication.zip.html 它只在Vista下出现.Win XP和7正常工作...如果您调整窗体大小,带有"..."按钮的textBox将不会调整大小,但如果您通过垂直splitContainer调整大小,则它可以正常工作.

c# controls winforms

20
推荐指数
1
解决办法
2万
查看次数

window.open在Chrome中使用目标"_blank"

我有一个小的javascript函数,它在新标签中打开一个网址:

function RedirectToPage(status) {
   var url = 'ObjectEditor.aspx?Status=' + status;
   window.open(url , '_blank');
}
Run Code Online (Sandbox Code Playgroud)

当通过单击按钮调用客户端时,即使在chrome中也是如此.但是在Chrome中,通过使用从服务器端(!)调用它时将无法工作

ScriptManager.RegisterClientScriptBlock()
Run Code Online (Sandbox Code Playgroud)

在Firefox和IE中,它会在新选项卡中打开网址,但Chrome会在新窗口中打开网址.什么可以解决方法迫使Chrome在新标签中打开它?

javascript google-chrome asp.net-ajax

15
推荐指数
2
解决办法
11万
查看次数

在ASP.NET 5中访问中间件中的DbContext

我写了我添加的自定义中间件

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    //...
    app.UseAutologin();
    app.UseMvc(routes =>
    {
       //...
Run Code Online (Sandbox Code Playgroud)

所以它是Mvc发挥作用之前的最后一个中间件.

在我的中间件Invoke方法中,我想(间接)访问DbContext.

 public async Task Invoke(HttpContext context)
  {
     if (string.IsNullOrEmpty(context.User.Identity.Name))
     {
        var applicationContext = _serviceProvider.GetService<ApplicationDbContext>();
        var signInManager = _serviceProvider.GetService<SignInManager<ApplicationUser>>();
        var result = await signInManager.PasswordSignInAsync(_options.UserName, _options.Password, true, false);
     }

     await _next(context);
  }
Run Code Online (Sandbox Code Playgroud)

几乎每次我得到以下异常:

InvalidOperationException:尝试在配置上下文时使用上下文.甲DbContext实例不能被内部使用OnConfiguring,因为它仍然在此时配置.

现在这个方法明显提出了这个问题PasswordSignInAsync.但是,如何确保在执行此类操作之前创建模型?

也许我并不完全清楚:我不想使用DbContext自己 - PasswordSignInAsync在验证用户和密码时使用它.

c# entity-framework asp.net-core-mvc asp.net-core

13
推荐指数
3
解决办法
3387
查看次数

VS 2010:禁用Fileheader以获取新的类文件

我最近注意到Visual Studio 2010(Professional)会在新的类文件中自动插入FileHeader.我不知道什么时候开始,但前段时间没有启用.此外,从那时起,在命名空间之后添加using指令.

这是文件生成后的样子:

// -----------------------------------------------------------------------
// <copyright file="Class1.cs" company="Microsoft">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

namespace MyNamespace
{
   using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;

   /// <summary>
   /// TODO: Update summary.
   /// </summary>
   public class Class1
   {
   }
}
Run Code Online (Sandbox Code Playgroud)

这就是它的样子(以及我想要的样子):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyNamespace
{
   public class Class1
   {
   }
}
Run Code Online (Sandbox Code Playgroud)

我禁用了所有扩展和所有插件,但问题仍然存在.希望这里的任何人都可以告诉我如何恢复前所未有的行为.

提前致谢

visual-studio-2010

8
推荐指数
1
解决办法
1266
查看次数

在带有JUnit的参数化测试类中使用枚举成员时出现异常

我有一个参数化的测试类,枚举成员作为参数.

public enum MyEnum {
    A,
    B
}
Run Code Online (Sandbox Code Playgroud)

这是测试类的重要部分:

@ParameterizedRobolectricTestRunner.Parameters
public static Collection<Object[]> data() {
    return Arrays.asList(new Object[][] {
            {MyEnum.A}
    });
}

public MyTestClass(MyEnum value) {
}
Run Code Online (Sandbox Code Playgroud)

运行测试时,我得到以下异常:

java.lang.IllegalArgumentException: argument type mismatch
Run Code Online (Sandbox Code Playgroud)

如果我将构造函数更改为

public MyTestClass(Object value) {
    MyEnum x = (MyEnum)value;
}
Run Code Online (Sandbox Code Playgroud)

我得到这个例外:

java.lang.ClassCastException: com.test.MyEnum cannot be cast to com.test.MyEnum
Run Code Online (Sandbox Code Playgroud)

有人能告诉我那里有什么事吗?特别是第二种情况似乎很奇怪.我主要是一个C#开发人员,所以也许这是Java的特例?如果我使用像Integer这样的其他数据类型,它可以正常工作.

谢谢你的帮助!

编辑:枚举实际上有8个成员,我刚才在这里改了.此外,构造函数有多个参数,我只是简化了示例.值的类型是com.test.MyEnum

Edit2:ParameterizedRobolectricTestRunner是问题所在.如果我使用(标准)参数化TestRunner,一切正常.在这种特殊情况下它是可以的,因为我不测试UI.但是在测试UI时,问题仍然会发生.

java junit robolectric

7
推荐指数
1
解决办法
2175
查看次数

如何根据需要指定OperationContract的参数

我想知道如何根据需要在WCF中指定OperationContract方法的参数,以便生成的xsd包含minOccurs ="1"而不是minOccurs ="0".

例:

[ServiceContract(Namespace = "http://myUrl.com")]  
public interface IMyWebService  
{  
   [OperationContract]  
   string DoSomething(string param1, string param2, string param3);  
}
Run Code Online (Sandbox Code Playgroud)

生成这个xsd:

<xs:element name="DoSomething">  
  <xs:complexType>  
    <xs:sequence>  
      <xs:element minOccurs="0" name="param1" nillable="true" type="xs:string" />  
      <xs:element minOccurs="0" name="param2" nillable="true" type="xs:string" />  
      <xs:element minOccurs="0" name="param3" nillable="true" type="xs:string" />  
    </xs:sequence>  
  </xs:complexType>  
Run Code Online (Sandbox Code Playgroud)

但我想在代码中定义minOccurs ="1"而无需在xsd文件中手动修复它.

c# wcf wsdl operationcontract

6
推荐指数
1
解决办法
2万
查看次数

片段中的getView有时返回null

我有一个带ViewPager的应用程序,它包含两个片段:主片段和列表片段.如果选择了列表中的某些内容,则会引发一个在活动中处理的事件.活动切换到主片段并调用"setSelectedItem"方法.在此方法中,我使用getView()查找特定视图以根据所选项目更改文本.

大多数时候它工作,但有时getView返回null,我不知道为什么.

pagerAdapter是在活动的OnCreate中创建的:

this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

寻呼机适配器在其构造函数中创建两个片段的实例:

public PagerAdapter(FragmentManager fm) {
    super(fm);
    this.main = MainFragment.newInstance();
    this.list = ListFragment.newInstance();
}
Run Code Online (Sandbox Code Playgroud)

这是活动中的方法,当选择列表中的项时调用该方法:

ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
Run Code Online (Sandbox Code Playgroud)

最后,这是MainFragment中setSelectedItem方法中导致问题的行:

TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
Run Code Online (Sandbox Code Playgroud)

我尝试了几件我读过的东西,但问题仍然不规律地发生.

android android-fragments

6
推荐指数
1
解决办法
2023
查看次数

IE 忽略响应头中的 X-UA-Compatible IE=edge

我对 IE10 和 IE11 的兼容模式有疑问。如此处其他问题所述,将其添加到 web.config 将解决 IE 在内网以兼容模式呈现页面的问题:

<httpProtocol>
   <customHeaders>
      <add name="X-UA-Compatible" value="IE=edge" />
   </customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)

文档类型是

<!DOCTYPE html> 
Run Code Online (Sandbox Code Playgroud)

这工作了一段时间,但现在行不通了。响应头正确包含此信息(X-UA-Compatible IE=edge),例如 IE11 在 EDGE 模式下运行,但用户代理是

Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.3;WOW64;Trident/7.0;.NET4.0E;.NET4.0C;.NET CLR 3.5.30729;.NET CLR 2.0.50727;.NET CLR 3.0.307)

这个不正确的用户代理会导致页面行为不正确。用户代理不正确的原因可能是什么?Intranet 站点的兼容模式始终处于启用状态,即使在当时它工作时也是如此。

html asp.net internet-explorer

5
推荐指数
1
解决办法
1174
查看次数

将二进制文件转换为字符串,反之亦然

我创建了一个返回(二进制)文件的Web服务.不幸的是,我不能使用byte []所以我必须将字节数组转换为字符串.我现在做的是以下(但它不起作用):

将文件转换为字符串:

byte[] arr = File.ReadAllBytes(fileName);
System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();  
string fileAsString = enc.GetString(arr);  
Run Code Online (Sandbox Code Playgroud)

要检查这是否正常,我将其转换回来:

System.Text.UnicodeEncoding enc = new System.Text.UnicodeEncoding();
byte[] file = enc.GetBytes(fileAsString);
Run Code Online (Sandbox Code Playgroud)

但最后,原始字节数组和从字符串创建的字节数组不相等.我是否必须使用另一种方法将文件读取到字节数组?

.net c# encoding

3
推荐指数
1
解决办法
1万
查看次数

在使用Mercurial(使用TortoiseHG)之前自动搁置?

我有一些我不想提交的更改文件(例如web.config).在我提取并更新到新的变更集之前,我必须搁置它们.拉动和更新后,我不得不取消他们.

我目前正在使用TortoiseHG.有没有可以自动执行此操作的扩展程序?

mercurial pull shelve tortoisehg

3
推荐指数
1
解决办法
740
查看次数

在IIS中运行时找不到.dll.config文件

我正在调用webservice,但找不到带有webservice绑定的.dll.config文件.假设调用webservice的代码位于名为webservicecall.dll的DLL中,生成的配置文件是webservicecall.dll.config.这两个文件都位于IIS(6.0),DefaultWebSite\testserver\bin中

当调用命令使用webservice时,我收到一个错误,指示找不到配置文件.

为了测试WebService调用,我创建了一个控制台应用程序TestWebServiceAccess.exe并使用了相同的配置文件(只是将其重命名为TestWebServiceAccess.exe.config).这很好用.

即使是"webservicecall.dll"中的单元测试也正确使用.dll.config文件,只是当整个东西在IIS中托管时它不起作用.

这是错误:

无法在ServiceModel客户端配置部分中找到引用合同"WEBSERVICE1"的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.

IIS中是否有任何配置选项可以使其正常工作?

c# iis web-services

2
推荐指数
1
解决办法
2275
查看次数