c# - 如何将文本框中的字体大小绑定(bind)到数据源?

标签 c# winforms

我已经实例化了一个类“my_font_size”,它有一个访问器“Size_Points”,我试图将其绑定(bind)到多个控件。

这就是我正在尝试的:

textBox1.DataBindings.Add("Font.Size", my_font_size, "Size_Points", false, DataSourceUpdateMode.OnPropertyChanged);

但是我得到了一个 Argument.Exception,

Cannot bind to the property 'Font.Size' on the target control.

如何深入了解该属性?

最佳答案

winforms 中的

Binding 不支持嵌套路径,您必须绑定(bind) Font 属性并使用一些 Format 事件处理程序来控制绑定(bind),如下所示:

Binding bind = new Binding("Font", my_font_size, "Size_Points");
bind.Format += (s,e) => {
   var b = s as Binding;
   var currentFont = b.Control.Font;
   e.Value = new Font(currentFont.FontFamily, 
                      (float) e.Value, currentFont.Style);
};
textBox1.DataBindings.Add(bind);

但是我怀疑您的类 my_font_size 没有足够的条件来使 Binding 工作。以下是如何通过遵循模式来通知某些属性的更改来完成:

public class my_font_size {
   float size_Points;
   public float Size_Points {
     get { return size_Points;}
     set {
        if(size_Points != value){
          size_Points = value;
          OnSize_PointsChanged(EventArgs.Empty);
        }
     }
   }
   public event EventHandler Size_PointsChanged;
   protected virtual void OnSize_PointsChanged(EventArgs e){
     var handler = Size_PointsChanged;
     if(handler != null){
        handler(this, e);
     }
   }
}

您还可以使用INotifyPropertyChanged,但我让这部分内容供您搜索更多内容。

关于c# - 如何将文本框中的字体大小绑定(bind)到数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432544/

相关文章:

c# - EF6中找不到用于插入记录的AddObject方法

c# - 如何在 C# 中有效地返回 SortedList<> 中的第一项和最后一项?

c# - 任何地方都可以找到用 C# 实现的规范数据结构和算法?

c# - 一旦将图像设置为另一个位图,PictureBox 中的位图会发生什么情况?

c# - 如何将数字转换为 ASCII 字符?

c# - 具体按键错误

c# - 如何使用 .NET 将空文本框数据作为参数传递给 oracle 中的存储过程

c# - WPF 图像 - 尝试使用 TreeView ,但无法使背景清晰

c# - 通过单击控件显示工具提示文本

c# - 在打印预览中绘制边框但不应打印边框 C#