小编m_c*_*ard的帖子

居中对齐容器并左对齐子元素

我有X个图像(所有相同的高度和宽度),我想在网页上显示它们.但我想让页面在调整浏览器大小时自动显示一行中的最大图像数量(不调整图像大小),并将图像显示为固定距离.

此外,图像应在页面中央组合在一起,并一个接一个地显示.

例如,当浏览器窗口宽度足以在一行上显示3个图像时,它们应显示如下.

每行3个图像以固定的距离分组在一起,在页面的中心,一个接一个. 在此输入图像描述

如果浏览器变得更宽,那么可以在一行上显示4个图像,它们应该像这样显示.

每行4个图像(不调整图像大小),在页面中心一个接一个地分开固定距离. 在此输入图像描述

到目前为止,我已经编写了以下代码:

HTML

<div class="outer-div">
    <div class="inner-div">
        <div class="image-div"><img src="images/1.png"></div>
        <div class="image-div"><img src="images/2.png"></div>
        <div class="image-div"><img src="images/3.png"></div>
        <div class="image-div"><img src="images/4.png"></div>
        <div class="image-div"><img src="images/5.png"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

img {
    height: 200px;
    width: 200px;
    padding: 10px;
}

.image-div {
    display: inline;
}

.outer-div {
    text-align: center;
    width: 100%;
}

.inner-div {
    text-align: left;
    display: inline;
}
Run Code Online (Sandbox Code Playgroud)

因此,图像以div(inner-div)内部的10px填充内联显示,然后在outer-div内居中.并且图像在内部div内部与文本对齐.

但问题是它们显示如下:

在此输入图像描述

当浏览器变宽时,如下所示 在此输入图像描述

有人可以告诉我如何显示像第一组图像的图像?

即每行的最大图像数(不调整图像大小),一个接一个地在页面中心组合在一起,固定距离(包裹).

html css html5 css3

32
推荐指数
3
解决办法
2785
查看次数

如何测试使用xUnit,SubSpec和FakeItEasy抛出的异常

我正在使用xUnit,SubSpec和FakeItEasy进行单元测试.到目前为止,我已经创建了一些积极的单元测试,如下所示:

"Given a Options presenter"
    .Context(() =>
        presenter = new OptionsPresenter(view,
                                         A<IOptionsModel>.Ignored,
                                         service));

"with the Initialize method called to retrieve the option values"
    .Do(() => 
        presenter.Initialize());

"expect the view not to be null"
    .Observation(() =>
        Assert.NotNull(view));

"expect the view AutoSave property to be true"
    .Observation(() => Assert.True(view.AutoSave));
Run Code Online (Sandbox Code Playgroud)

但是现在我想写一些负面单元测试并检查某些方法是否被调用,并抛出异常

例如

"Given a Options presenter"
    .Context(() =>
        presenter = new OptionsPresenter(view,
                                         A<IOptionsModel>.Ignored,
                                         service));

"with the Save method called to save the option values"
    .Do(() => 
        presenter.Save());

"expect an ValidationException to be thrown" …
Run Code Online (Sandbox Code Playgroud)

c# bdd unit-testing xunit fakeiteasy

14
推荐指数
3
解决办法
9479
查看次数

如何使Log4Net发送一个电子邮件,其中From值设置为当前用户的电子邮件地址

Log4Net配置示例网页上,它显示了如何设置SmtpAppender的示例.

所以我将以下设置添加到我的app.config文件中,并在记录警告或更高时成功发送电子邮件(这很好).

<appender name="EmailAppender" type="log4net.Appender.SmtpAppender">
  <to value="me@mycompany.com" />
  <from value="me@mycompany.com" />
  <subject value="test logging message" />
  <smtpHost value="smtpserver.mycompany.com" />
  <lossy value="true" />
  <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="WARN"/>
  </evaluator>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

但是From值是用我的电子邮件地址硬编码的.

我的应用程序是一个WinForms应用程序,它将部署到用户PC,因此知道哪个用户遇到警告/错误会非常方便.

是否可以设置Log4Net SmtpAppender以使From值使用当前用户的电子邮件地址?

谢谢您的帮助.

c# log4net log4net-configuration log4net-appender

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

如何获取Default Users文件夹(例如c:\ users\Default)

我查看了Environment.GetFolderPath方法和System.Environment.SpecialFolder枚举,但是我看不到任何返回Default Users文件夹路径的内容.

有人可以告诉我如何以编程方式获取默认用户文件夹(或甚至更好的默认用户AppData本地文件夹路径,例如c:\ users\Default\AppData\Local),因为我需要将一些文件复制到此文件夹中?

谢谢

.net c#

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

Magento Varien JS文件应如何更改?

我需要对以下Magento文件进行一些更改:

  • 的public_html\JS \瓦瑞恩\ configurable.js
  • 的public_html\JS \瓦瑞恩\产品,JS

问题是; 我应该编辑这些文件吗?它们是核心文件(如果我升级Magento会被替换)吗?

如果我不应该编辑它们,如果我想更改这些文件的内容,该怎么办?

javascript magento prototypejs magento-1.7

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

WPF ListView 列标题对齐

我正在编写一个 WPF Windows 应用程序,MainWindow 包含一个具有 3 列的 ListView 控件。

以下代码在列标题中居中显示文本(默认情况下)。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListView>
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Column 1" 
                                    Width="200"/>
                    <GridViewColumn Header="Column 2" 
                                    Width="200"/>
                    <GridViewColumn Header="Column 3" 
                                    Width="200"/>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

在 WPF ListView_GridView 控件文章中找到了以下如何对齐列标题,该文章显示了如何左对齐列标题文本。我已经粘贴了下面的列:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style TargetType="{x:Type GridViewColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Left" />
        </Style>
    </Window.Resources>
    <Grid>
        <ListView>
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Column 1" 
                                    Width="200"/>
                    <GridViewColumn …
Run Code Online (Sandbox Code Playgroud)

wpf xaml listview

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

在 Outlook 2013 C# VSTO 项目中,为什么 Explorer SelectionChange 事件会触发两次

在我的 Outlook 2013 C# VSTO 项目中,我注意到 Explorer SelectionChange 事件触发了两次。我认为这一定是由于我的代码中的错误(例如将事件处理程序连接两次),但我找不到任何此类错误。

所以我回到基础并创建了一个小的 VSTO Outlook 2013 Addin 测试项目,同样的事情也发生在那里。Explorer SelectionChange 事件被触发两次。

public partial class ThisAddIn
{
    private Explorer _activeExplorer;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        _activeExplorer = Application.Explorers[1];

        _activeExplorer.SelectionChange += _activeExplorer_SelectionChange;
    }

    private void _activeExplorer_SelectionChange()
    {
        System.Diagnostics.Debug.WriteLine("_activeExplorer_SelectionChange : " + DateTime.Now.ToString());
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
    }

    #region VSTO generated code

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with …
Run Code Online (Sandbox Code Playgroud)

c# outlook vsto

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

使用 EWS 获取邮箱权限

我正在创建一个需要获取每个邮箱权限的应用程序,但我似乎无法让它工作。我在 VS 对象浏览器中注意到Permissions属性位于Folder类上。

所以我猜我需要获取MailBox对象,然后获取根/默认文件夹,以便我可以获得权限。

这是我到目前为止所做的,但是当它调用时,Folder rootfolder = Folder.Bind(service, sharedMailboxRootFolderId);我收到以下异常:

“客户端访问服务器版本与访问资源的邮箱服务器版本不匹配。”

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
string exchangeServerWebServicesUrl = "https://example.com/EWS/Exchange.asmx";
service.Url = new Uri(exchangeServerWebServicesUrl);

string username = "*********************";
string password = "*********************";

service.UseDefaultCredentials = false;
service.Credentials = new WebCredentials(username, password);

Mailbox sharedMailbox = new Mailbox("shared@example.com");

FolderId sharedMailboxRootFolderId = new FolderId(WellKnownFolderName.Root, sharedMailbox);
Folder rootfolder = Folder.Bind(service, sharedMailboxRootFolderId);

var permissions = rootfolder.Permissions;
Run Code Online (Sandbox Code Playgroud)

我试过传入不同的 ExchangeVersion 枚举值,但它们也不起作用。但是当我尝试获取公共文件夹根文件夹时,传递 ExchangeVersion.Exchange2007_SP1 确实有效。

Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
Run Code Online (Sandbox Code Playgroud)

所以问题是如何使用 EWS 获得邮箱权限?

c# exchangewebservices

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

WPF DataGrid垂直线粗细

我已将DataGrid添加到 WPF 窗口,并在 XAML 中设置VerticalGridLinesBrush属性以显示相关颜色的垂直网格线。但我不知道如何增加 DataGridRow 中显示的垂直网格线的宽度

有人可以告诉我如何在 WPF DataGrid 中设置垂直网格线粗细吗?

wpf xaml datagrid wpfdatagrid

4
推荐指数
1
解决办法
7481
查看次数

如何使用HTML + JavaScript自动登录OWA 2013

我们以前使用Exchange 2007和下面的HTML + JavaScript自动登录OWA 2007.

但我们现在已升级到Exchange 2013,脚本不再有效.它显示404 - 未找到文件或目录. 我已经向我们的基础设施部门询问了owaauth.dll文件是否仍在同一个位置,他们告诉我它已移至:

https://" + server + "/exchweb/auth/owaauth.dll
Run Code Online (Sandbox Code Playgroud)

我更改了脚本以使用新路径,但我仍然收到404 - File or directory not found错误.

我的问题是,我需要在脚本中进行哪些更改才能使其与Exchange 2013一起使用?

以下是Exchange 2007脚本详细信息

HOWTO:使用HTML + JavaScript自动登录OWA 2007

<script>
function LoginToOWA (server,domain,username,password) {


  var url = "https://" + server + "/exchweb/bin/auth/owaauth.dll";
  var p = {destination:'https://' + server + '/exchange',flags:'0',forcedownlevel:'0',trusted:'0',isutf8:'1',username:domain + '\\' + username,password:password};


  var myForm = document.createElement("form");
  myForm.method="post" ;
  myForm.action = url ;

  for (var k in p) {

    var myInput = document.createElement("input") ; …
Run Code Online (Sandbox Code Playgroud)

html javascript exchange-server

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

使用任务时如何在STA线程上运行

我正在VS2010中开发VSTO Outlook加载项。在该ThisAddIn_Startup方法(外接程序启动时称为)中,我的代码需要检查Outlook是否在公司网络上运行。如果Outlook未在网络上运行,则大约需要3秒钟才能得到答案。因此,我将代码包装在一个Task中,以使其运行Async以确保它在检查时不会挂起Outlook。

例如

bool onNetwork = false;
Task task = Task.Factory.StartNew(() =>
{
    onNetwork = IsConnectedToNetwork();
});
Run Code Online (Sandbox Code Playgroud)

完成检查后,需要加载并显示相关表格。所以我将代码更改为:

Task task = Task.Factory.StartNew(() =>
{
    if (IsConnectedToNetwork())
    {
        OnNetworkForm onNetworkForm = new OnNetworkForm();
        onNetworkForm.Show();
    }
    else
    {
        OffNetworkForm offNetworkForm = new OffNetworkForm();
        offNetworkForm.Show();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是需要将窗体加载到UI线程上。否则,InvalidOptionationException当它尝试加载并显示带有消息的表单时,我得到一个提示:

调用线程必须是STA,因为许多UI组件都需要STA。

我的问题是如何使窗体加载到UI线程上?

请注意

我不能使用await,因为那是C#5.0,而VS 2010不支持C#5.0。而且ThisAddin类不是控件,因此没有可用的BeginInvokeor Invoke方法。

c# multithreading vsto winforms

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