小编agr*_*ath的帖子

理解空合并运算符(??)

我有一个自定义WebControl,它实现了一个.Value返回Nullable <decimal> 的getter/setter

它是一个客户端过滤的文本框(TextBox包含javascript 的子类和用于设置/获取值的一些服务器端逻辑)

这是来自该控件的getter和setter:

public decimal? Value
{
    get
    {
        decimal amount = 0;
        if (!decimal.TryParse(this.Text, NumberStyles.Currency, null, out amount))
        {
            return null;
        }
        else
        {
            return amount;
        }
    }
    set
    {
        if (!value.HasValue)
        {
            this.Text = "";
        }
        else
        {
            this.Text = string.Format("${0:#,##0.00}", value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到的问题是这个语句的输出:

decimal Amount = uxAmount.Value ?? 0M;
Run Code Online (Sandbox Code Playgroud)

uxAmount.Value返回10000 时,我看到Amount被设置为"0" .

这符合我的预期(原则是套管的变化):

decimal? _Amount = uxAmount.Value;
decimal amount = _Amount ?? 0;
Run Code Online (Sandbox Code Playgroud)

我也看到了这种行为(最近)在调用Linq2Sql数据上下文中定义的UDF函数以及空合并运算符时,我知道我的UDF调用返回了预期值,但我得到的是RHS值. …

c# nullable null-coalescing-operator

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

CSS文本包装折叠容器

我正在寻找一个HTML/CSS解决方案来解决我们在我们正在构建的网站上遇到的问题.如果需要,我很乐意实现基于JavaScript的解决方案,但我更喜欢它本地处理.

我们有内容管理文本,它需要位于指定区域内,但如果超出可用宽度则换行.文本后面是不透明度的背景颜色.

当文本很短时,由于浮动,容器会折叠到文本的宽度.当文本很长并且发生换行时,容器会以最大宽度挂出,即使里面的文本已经包裹在下面,所以右侧有一小部分背景颜色(这对于我希望容器折叠到前一个单词的边缘,这样它就不会"看起来像"包裹的单词有空间,当它非常接近时.

HTML

<div>
    <p>Crack the Shutters Open Wide for Parkside Paradise</p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

body div {
    background-color: #AAFF3B;
    max-width:80%;
    padding:20px;
    display:inline-block;
    float:left;
}
body p {
    display:inline-block;
    background-color: #FFAA3B;
    position: relative;   
    float:left;
    white-space:pre-line;
    clear:left;
}
Run Code Online (Sandbox Code Playgroud)

这是一个JSFiddle:http://jsfiddle.net/nmuot8bm/3/

如果你看第三个例子,你可以在橙色框的右侧看到少量填充,其中字porttitor已经在下面包裹到一个新线但橙色容器仍然处于最大宽度,尽管浮动.如果内容编辑器引入了换行符(例如,根据示例4在前庭和移动器之间),则容器正确地折叠.

我认为正在发生的是容器在文本换行之前增长,浏览器在换行后不会重新计算宽度?

这是我在JSFiddle中显示的测试用例的图片: 在此输入图像描述

下面是暂存站点上的故障图片(在分离到JSFiddle之前): 例2

您可以看到文本已经包装,但容器没有折叠,留下了很大的背景颜色差距.

nb我们可以通过这样做来模仿,text-align:justify但是这些单词之间的间距与网站上其他文本不一致.

编辑:我看到这个问题可能是重复的.我发誓在发布之前我做过研究!

最大宽度调整以适应文本?

线包装上的CSS宽度/最大宽度?

将包含元素的文本强制包装到max-width

将DIV收缩到包裹到其最大宽度的文本?

我认为一般的共识/结论是没有前沿的CSS我不可能使用JavaScript解决方案.

我在我的JSFiddle中添加了一些示例:http://jsfiddle.net/nmuot8bm/6/, 包括此处的JavaScript解决方案:https://stackoverflow.com/a/33246364/647728

html css css3 word-wrap

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

照明USB OpenDMX FTD2XX DMXking

几个快速问题.我有一个DMX王USB照明控制器,我正试图控制.

它基于Open DMX协议(来自Entec),提供ac#class.我已经将设备插入RGB设备,如果我用他们的驱动程序测试USB设备,它连接到COM4,当我将他们的软件切换到发送模式时,我可以设置单独的DMX通道.

使用他们的OpenDMX类,进行一些修改(核心是相同的,我刚刚添加了一些额外的错误检查,我可以找到设备,查询它的信息等.当我打开设备时,我得到一个句柄.我可以写使用FT_Write到那个设备但不管我做什么,实际上没有灯亮起来.

以下是一些相关的代码片段:

public static byte[] buffer;

[DllImport("FTD2XX.dll")]
public static extern FT_STATUS FT_Open(UInt32 uiPort, ref uint ftHandle);
[DllImport("FTD2XX.dll")]
public static extern FT_STATUS FT_Write(uint ftHandle, IntPtr lpBuffer, UInt32 dwBytesToRead, ref UInt32 lpdwBytesWritten);

public static void writeData()
{
    while (!done)
    {
        try
        {
            initOpenDMX();
            status = FT_SetBreakOn(handle);
            status = FT_SetBreakOff(handle);
            bytesWritten = write(handle, buffer, buffer.Length);
            if (bytesWritten == 0)
            {
                break;
            }

            System.Threading.Thread.Sleep(25);
        }
        catch (Exception)
        {
            break;
        }
    }
    Connected = false;
    done = false;
}
Run Code Online (Sandbox Code Playgroud)

所有状态都以FT_Ok的形式返回,bytesWritten返回为512(此USB控制器上的通道数)

我一直在想我错过了将设备设置为传输模式或类似的设备(它只有一个DMX插槽)

public …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke dmx512

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

标签 统计

c# ×2

css ×1

css3 ×1

dmx512 ×1

html ×1

null-coalescing-operator ×1

nullable ×1

pinvoke ×1

word-wrap ×1