关于在用户控件中自动调整面板大小,我遇到了一个奇怪的问题.该面板固定在用户控件的所有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调整大小,则它可以正常工作.
我有一个小的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在新标签中打开它?
我写了我添加的自定义中间件
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在验证用户和密码时使用它.
我最近注意到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)
我禁用了所有扩展和所有插件,但问题仍然存在.希望这里的任何人都可以告诉我如何恢复前所未有的行为.
提前致谢
我有一个参数化的测试类,枚举成员作为参数.
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时,问题仍然会发生.
我想知道如何根据需要在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文件中手动修复它.
我有一个带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)
我尝试了几件我读过的东西,但问题仍然不规律地发生.
我对 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 站点的兼容模式始终处于启用状态,即使在当时它工作时也是如此。
我创建了一个返回(二进制)文件的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)
但最后,原始字节数组和从字符串创建的字节数组不相等.我是否必须使用另一种方法将文件读取到字节数组?
我有一些我不想提交的更改文件(例如web.config).在我提取并更新到新的变更集之前,我必须搁置它们.拉动和更新后,我不得不取消他们.
我目前正在使用TortoiseHG.有没有可以自动执行此操作的扩展程序?
我正在调用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# ×5
.net ×1
android ×1
asp.net ×1
asp.net-ajax ×1
asp.net-core ×1
controls ×1
encoding ×1
html ×1
iis ×1
java ×1
javascript ×1
junit ×1
mercurial ×1
pull ×1
robolectric ×1
shelve ×1
tortoisehg ×1
wcf ×1
web-services ×1
winforms ×1
wsdl ×1