我已经和它斗争了一段时间,并且发现许多其他人也在使用TableLayoutPanel(.net 2.0 Winforms).
问题
我试图采用一个'空白'tablelayoutpanel,它定义了10列,然后在运行时以编程方式添加控件行(即每个单元一个控件).
人们可能认为它应该如此简单
myTableLayoutPanel.Controls.Add(myControl, 0 /* Column Index */, 0 /* Row index */);
Run Code Online (Sandbox Code Playgroud)
但是(对我来说)不添加行.所以也许可以添加一行样式
myTableLayoutPanel.RowStyles.Clear();
myTableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Absolute, 30F));
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.我已经挖掘并发现myTableLayoutPanel.RowCount使用情况从设计时间变为运行时间,因此myTableLayoutPanel.RowCount++;实际上并没有添加另一行,甚至在添加RowStyle条目之前/之后!
我遇到的另一个相关问题是控件将被添加到显示器,但它们都只是在TableLayoutPanel的点0,0处渲染,另外它们甚至不被限制在它们应该是的Cell边界内.显示在内(即使用Dock = DockStyle.Fill它们仍然显得太大/太小).
有人有一个在运行时添加行和控件的工作示例吗?
我试图模拟对索引属性的调用.即我想moq以下:
object result = myDictionaryCollection["SomeKeyValue"];
Run Code Online (Sandbox Code Playgroud)
以及设定值
myDictionaryCollection["SomeKeyValue"] = myNewValue;
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我需要模拟我的应用程序使用的类的功能.
有谁知道如何用MOQ做到这一点?我尝试过以下变化:
Dictionary<string, object> MyContainer = new Dictionary<string, object>();
mock.ExpectGet<object>( p => p[It.IsAny<string>()]).Returns(MyContainer[(string s)]);
Run Code Online (Sandbox Code Playgroud)
但那不编译.
我想用MOQ实现的目标是什么,有没有人有任何我可以做到这一点的例子?
我试图将WPF文本框的Maxlength属性绑定到类中的已知常量.我正在使用c#.
该类的结构与以下内容差别不大:
namespace Blah
{
public partial class One
{
public partial class Two
{
public string MyBindingValue { get; set; }
public static class MetaData
{
public static class Sizes
{
public const int Length1 = 10;
public const int Length2 = 20;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是的,它是深层嵌套的,但不幸的是在这种情况下,如果不需要大量重写,我就无法移动.
我希望我能够将文本框MaxLength绑定到Length1或Length2值,但我无法让它工作.
我期待绑定类似于以下内容:
<Textbox Text="{Binding Path=MyBindingValue}" MaxLength="{Binding Path=Blah.One.Two.MetaData.Sizes.Length1}" />
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
非常感谢
请帮忙!
背景信息
我有一个WPF应用程序访问SQL Server 2005数据库.数据库在运行应用程序的计算机上本地运行.
无处不在我使用Linq DataContext我使用了一个using {}语句,并传入一个函数的结果,该函数返回一个已打开的SqlConnection对象,并在返回DataContext构造函数之前使用它执行了SqlCommand ..即
// In the application code
using (DataContext db = new DataContext(GetConnection()))
{
... Code
}
Run Code Online (Sandbox Code Playgroud)
getConnection看起来像这样(我从函数中删除了'fluff'以使其更具可读性,但没有其他功能缺失).
// Function which gets an opened connection which is given back to the DataContext constructor
public static System.Data.SqlClient.SqlConnection GetConnection()
{
System.Data.SqlClient.SqlConnection Conn = new System.Data.SqlClient.SqlConnection(/* The connection string */);
if ( Conn != null )
{
try
{
Conn.Open();
}
catch (System.Data.SqlClient.SqlException SDSCSEx)
{
/* Error Handling */
}
using (System.Data.SqlClient.SqlCommand SetCmd = new System.Data.SqlClient.SqlCommand()) …Run Code Online (Sandbox Code Playgroud) 我在使用时遇到问题LoadControl( type, Params ).让我解释...
我有一个超级简单的用户控件(ascx)
<%@ Control Language="C#" AutoEventWireup="True" Inherits="ErrorDisplay" Codebehind="ErrorDisplay.ascx.cs" EnableViewState="false" %>
<asp:Label runat="server" ID="lblTitle" />
<asp:Label runat="server" ID="lblDescription" />
Run Code Online (Sandbox Code Playgroud)
代码(c#)背后:
public partial class ErrorDisplay : System.Web.UI.UserControl
{
private Message _ErrorMessage;
public ErrorDisplay()
{
}
public ErrorDisplay(Message ErrorMessage)
{
_ErrorMessage = ErrorMessage;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (_ErrorMessage != null)
{
lblTitle.Text = _ErrorMessage.Message;
lblDescription.Text = _ErrorMessage.Description;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Web应用程序的其他地方,我使用以下代码将usercontrol的实例添加到页面:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
Run Code Online (Sandbox Code Playgroud)
我正在使用LoadControl的重载版本,因为我想将Message参数传递给构造函数.这一切看起来都可行.
但是,当在OnPreRender()ErrorDisplay用户控件上触发时,lblTitle和lblDescription变量都是 …
我试图找出与WPF Scrollbar thumb元素大小相关的算法.
可以使用Scrollbar.ViewportSize属性调整thumb元素的大小,但它又与the Scrollbar.Minimum和Scrollbar.Maximumvalues相关.
到目前为止我发现的是:
对于最小值和最大值0和10,ViewportSize为:
0 - 拇指最小尺寸
5 - 拇指大约可用轨道的25%
10 - 拇指大约可用轨道的50%
100 - 拇指大约75%的可用轨道
1000 - 拇指大约90%的可用轨道
10000 - 拇指填充可用的轨道.
[注意:这些数字仅来自我粗略的试错!]
理想情况下,我希望能够有一个算法,其中给定滚动条的最小值和最大值我可以将拇指大小设置为可用轨道的x%.
有人能帮忙吗?
谢谢.
我的团队成员正在编写一个访问外部FTP站点以下载文件的应用程序.编写代码之后,我们希望能够在不使用物理ftp服务器的情况下进行集成测试,因为它是一个外部站点.
我们在过去使用nDumpster在代码中模拟smtp服务器时做了类似的事情,我们想知道是否有可以使用的兼容的ftp服务器?
编辑:
我应该补充一点,这些不是真正的单元测试,我们有那些并模拟我们的ftp实现.
但是我们在接口的实际实现中使用WebFtpRequest.Create().因此,测试此代码需要一个实际的服务器(除非我们在测试中注册我们自己的协议),最终我们将不得不针对实际的服务器进行测试!
我们希望能够在代码中启动和停止ftp服务器(就像你可以nDumpster一样)并检查我们的调用是否正确.
我需要在所有可用的从机上运行脚本.这主要是因为他们在构建之前获得了相关的Windows修补程序和新的第三方工具.
我所拥有的剧本可以多次运行,没有不良副作用,而且重量很轻,所以如果有必要,我很高兴这是蛮力.
任何人都可以提出如何确保奴隶在工作之前"最新"的建议吗?
我很满意由主服务器驱动的解决方案,或者可以在正常从属作业处理之前(自动)注入任务的解决方案.
我正在尝试将DependancyProperty我的一个用户控件绑定到Widtha Column中的a 属性Grid.
我有类似这样的代码:
<Grid x:Name="MyGridName">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="TitleSection" Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>...</Grid.RowDefinitions>
<GridSplitter x:Name="MyGridSplitter" Grid.Row="0" Grid.Column="0" ... />
</Grid>
Run Code Online (Sandbox Code Playgroud)
在单独的Usercontrol中,我DependancyProperty定义了以下内容.
public static readonly DependencyProperty TitleWidthProperty = DependencyProperty.Register("TitleWidth", typeof(int), typeof(MyUserControl));
public int TitleWidth
{
get { return (int)base.GetValue(TitleWidthProperty); }
set { base.SetValue(TitleWidthProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)
我在代码中创建Usercontrol的实例,因此我有一个类似于此的绑定语句:
MyUserControl Cntrl = new MyUserControl(/* Construction Params */);
BindingOperations.SetBinding(Cntrl , MyUserControl.AnotherProperty, new Binding { ElementName = "objZoomSlider", Path = new PropertyPath("Value"), Mode …Run Code Online (Sandbox Code Playgroud) 我现在正在使用Asp.Net mvc框架并且喜欢它与经典的asp.net方式相比.我要说的一件事是,View是否可以接受(间接)访问数据库?
例如,我使用控制器来填充自定义数据类,其中包含我认为View需要执行其工作的所有信息,但是当我将对象传递给视图时,它也会导致数据库读取.
一个快速的伪示例.
public interface IProduct
{
/* Some Members */
/* Some Methods */
decimal GetDiscount();
}
public class Product : IProduct
{
public decimal GetDiscount(){ ... /* causes database access */ }
}
Run Code Online (Sandbox Code Playgroud)
如果View可以访问Product类(它传递了一个IProduct对象),它可以调用GetDiscount()并导致数据库访问.
我在想办法防止这种情况发生.目前我只为Product该类提供多个接口继承.相反,仅仅实现IProduct的,现在将执行IProduct和IProductView.IProductView将列出该类的成员,IProduct将包含可能导致数据库访问的方法调用.
"视图"只会知道IProductView类的接口,并且无法调用导致数据访问的方法.
在将对象传递给视图之前,我还有其他关于"锁定"对象的模糊想法,但我可以预见到这种方法可以产生巨大的副作用.
所以,我的问题: