小编Rez*_*aei的帖子

WPF自定义LED复选框

我目前正在尝试将某些控件从WindowsForms“移植”到WPF。我有这个时尚的led复选框,并尝试在wpf中实现相同的视觉外观。但我无法完成它。

我已经搜索了很多,但找不到我的问题/解决方案。

这就是winforms控件的外观 在此处输入图片说明

彩色的圆圈大小取决于控件的大小。颜色是用户定义的。颜色用于圆和文本。如果未选中,则检查并变暗/灰色,这是明亮的。暗色和高光颜色是根据控制色(较浅/较暗)计算得出的。

到目前为止,我在wpf中做相同的所有尝试几乎都失败了。:-(我的拳头试图用一个用户控件来做到这一点,但是我决定将它从复选框中派生出来只是一个额外的选项来设置颜色会更容易。

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        
    xmlns:test="clr-namespace:LedTest"
    xmlns:uc="clr-namespace:WPFTest;assembly=LedControl"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    x:Class="LedTest.MainWindow"
    Title="MainWindow" Height="285" Width="566">
   <Window.Resources>
      <ResourceDictionary x:Key="ResDict2"  Source="Dictionary2.xaml"/>
   </Window.Resources>
   <Grid Margin="0">
      <Grid.RowDefinitions>
         <RowDefinition Height="Auto" MinHeight="27" />
         <RowDefinition Height="75"/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
         <ColumnDefinition Width="10*" />
         <ColumnDefinition Width="179*"/>
      </Grid.ColumnDefinitions>
      <uc:LedControl x:Name="led1" 
            Color="ForestGreen" Text="Some Option"
         Grid.Column="1" Grid.Row="1" Height="39" VerticalAlignment="Bottom" Margin="0,0,0,36"/>
      <CheckBox Content="Some Option" Style="{DynamicResource TestStyle}" Margin="0,0,31,0" Grid.Column="1"/>
   </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

这是我的LedControl代码:

<UserControl x:Class="LedControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="100" d:DesignWidth="300">
   <UserControl.Resources>
   </UserControl.Resources>
   <StackPanel x:Name="gridBigLed" Orientation="Horizontal" >
      <Border x:Name="border1"
                BorderThickness="1" 
                Width="{Binding ActualHeight, ElementName=gridBigLed, Mode=OneWay}" …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf winforms

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

在 StatusStrip 中的进度条上显示文本

我是Windows 编程新手。在 C# 中,我使用 Visual Studio 2017。现在,我遇到了一个问题。问题是,我试图在 中显示一些文本(进度值),ProgressBarStatusStrip找不到正确的工作方法来做到这一点。:-(

任何人都可以为我提供一些想法或解决方案来解决这个问题吗?我会很高兴并感谢你!您的回答将不胜感激。:-)

.net c# statusstrip winforms progress-bar

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

以数组的最后N个元素代替PowerShell中的第一个元素

快速提问。我有以下几点:

$domain = "my.new.domain.com"
$domain.Split('.')[0,1]
Run Code Online (Sandbox Code Playgroud)

...返回值:

my
new
Run Code Online (Sandbox Code Playgroud)

那太好了,除了我需要最后两个(domain.com),并且不确定如何做到这一点。不幸的是,拆分的数量是可变的(例如test.my.new.domain.com)。一个人怎么说“到底并计数X向后分裂”?

powershell

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

C#在你的winforms中嵌入youtube/videos

我有一个问题,我在winform中添加了shockwave播放器.但似乎youtube不再支持它了.那么如何在我的winform应用程序中嵌入视频/ YouTube视频呢?

.net c# embed youtube winforms

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

自定义通用用户控件未出现在工具箱中

我需要使用泛型创建自定义用户控件,因为我有一个BindingSource类型为数据源的用户控件T

public partial class ABMControl<T> : UserControl
{
    public ABMControl()
    {
        InitializeComponent();
        this.bindingSource.Datasource = typeof(T);
    }
}
Run Code Online (Sandbox Code Playgroud)

在表单设计器中,自定义用户控件不会出现在工具箱中,因为它是通用的。解决办法是什么?

c# generics user-controls windows-forms-designer winforms

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

设置具有对象 DataSource 的 DataGridView 中自动生成的列的格式

我想DataGridView根据我的自定义类自动创建所有列。每件事都按其应有的方式工作,但我需要的是格式化和对齐单元格值。

那么是否有一个属性可以添加到我的字段(HeightMeter)中,以便它可以根据需要对齐和格式化。要在手动列创建代码中执行此操作,您将使用以下命令:

DataGridViewColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
DataGridViewColumn.DefaultCellStyle.Format = "N2";
Run Code Online (Sandbox Code Playgroud)

如何在使用 AutoGenerateColumns 解决方案时指定 DefaultCellStyle 属性 - 注意我仅限于使用 .net 2 :(

这是我需要的和我得到的示例:

public partial class Form1 : Form
{
  private List<Person> people = new List<Person>();
  private DataGridView dataGridView1 = new DataGridView();
  private DataGridView dataGridView2 = new DataGridView();
  public Form1()
  {
    InitializeComponent();
    dataGridView1.Dock = DockStyle.Top;
    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

    dataGridView2.Dock = DockStyle.Top;
    dataGridView2.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

    Controls.Add(dataGridView2);
    Controls.Add(dataGridView1);

    Load += new EventHandler(Form1_Load);
    Text = "";
  }

  private void Form1_Load(object sender, EventArgs e)
  {
    PopulateLists(); …
Run Code Online (Sandbox Code Playgroud)

c# datagridview .net-2.0 winforms

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

让Label在winform中可见5秒

我正在 Visual Studio 2017 中创建一个 WinForms 应用程序。

我有一个登录表单,如果用户输入错误的用户名或密码,则具有visible = false属性的标签将变得可见5秒,然后返回不可见。

我尝试过做这样的事情:

label3.Visible = true;
Thread.Sleep(3000);
label3.Visible = false;
Run Code Online (Sandbox Code Playgroud)

显然,这是行不通的,我在网上找不到任何有类似问题的人,所以我希望你能帮助我解决这个问题。

我见过其他使用此解决方案的:

var t = new Timer();
t.Interval = 3000; // it will Tick in 3 seconds
t.Tick += (s, e) =>
{
    label3.Hide();
    t.Stop();
};
t.Start();
Run Code Online (Sandbox Code Playgroud)

但我收到一条错误消息“无法在此范围内声明名为“e”的本地或参数,因为该名称在封闭的本地范围中使用来定义本地参数”。

c# label timer winforms

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

ItemCheck 事件后清除 CheckedListBox

在我用 C# 编写的 Windows 窗体项目中,我尝试在检查最后一个项目后清除 CheckedListBox。

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    if (checkedListBox1.CheckedItems.Count + 1 == checkedListBox1.Items.Count)
    {
        checkedListBox1.Items.Clear();
    }
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,在我检查最后一项后,程序将抛出 NullReferenceException。

有人可以解释为什么会发生这种情况以及我该如何处理吗?

提前致谢!

.net c# checkedlistbox winforms

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

Visual Studio 2017 Winforms 设计器缓存在哪里?

当尝试打开我的其中一个表单时,我从 Visual Studio Designer 中收到一些烦人的错误(无法从程序集 y 加载类型 x,即使程序集 y 明确包含类型 x;项目构建并运行良好)。对我来说,这看起来像是 Visual Studio Designer 缓存问题。我环顾四周,似乎 Visual Studio Designer 使用了 ShadowCache,通常可以在以下位置找到

C:\Users\%UserName%\AppData\Local\Microsoft\VisualStudio\15.0_6d397e1a\Designer\ShadowCache

但是,该文件夹是空的。这对我来说,必须有一些其他的缓存位置,因为我正在使用设计器来做其他一些事情,设计器缓存位置中至少应该有一些东西......

windows-forms-designer visual-studio winforms visual-studio-2017

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

创建 Form.MinimumClientSize 属性

Windows 窗体具有SizeClientSize属性。Windows 窗体还有一个MinimumSize属性,可让您设置窗体的最小允许大小。我正在寻找一种设置最小值的方法ClientSize表单的方法。我是 C# 的新手,我不确定这样做的最佳方法。

我突然想到我可以使用该Form.SizeChanged事件来检查和限制表单大小,但这看起来很混乱,我正在寻找另一种方法。

注意:如果表单边框大小发生变化,我希望保持最小客户端大小。

.net c# forms winforms

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